ideas icon indicating copy to clipboard operation
ideas copied to clipboard

Специализация clock_time_conversion для system и steady

Open Roman-Koshelev opened this issue 3 years ago • 2 comments

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

Roman-Koshelev avatar Apr 25 '21 18:04 Roman-Koshelev

если компутер синхронизировал время с интернетами, то кэширование весело накрывается медным тазом.

монотонные часы они на то и монотонные, что не зависят от внешней корректировки часов.

toughengineer avatar Jun 11 '21 12:06 toughengineer

Как не зависят? Зависят, и тикают с той же скоростью что и системные. Для них есть гарантия что каждый следующий вызов получения времени возвращает время больше предыдущего

Roman-Koshelev avatar Jun 11 '21 12:06 Roman-Koshelev