cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

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

Open Roman-Koshelev opened 3 years ago

Roman-Koshelev commented 3 years ago

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

toughengineer commented 3 years ago

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

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

Roman-Koshelev commented 3 years ago

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