ideas
ideas copied to clipboard
Специализация clock_time_conversion для system и steady
В С++20 наконец-то стало возможным конвертировать время между часами, но не появилось специализации для конвентирования системных часов в монотонные и обратно. На сколько я помню, для них гарантируется что они тикают с одинаковой скоростью и перевод одних в другие тривиален если знать разницу. Разница вычисляется просто (и её можно кешировать). Отдельно надо обратить внимание на то, что системные часы переключаемые и это надо отслеживать для перевычисления разницы. Например localtime на linux делает это вызовом fstat для файла со временем и проверяет что он не изменился. (Неприятно конечно делать системный вызов на каждую конвертацию, но все-же возможно. Может быть это можно сделать оптимальней, например два vdso вызова могут быть быстрее fstat)
если компутер синхронизировал время с интернетами, то кэширование весело накрывается медным тазом.
монотонные часы они на то и монотонные, что не зависят от внешней корректировки часов.
Как не зависят? Зависят, и тикают с той же скоростью что и системные. Для них есть гарантия что каждый следующий вызов получения времени возвращает время больше предыдущего