Информация об изменениях

Сообщение Re: гарантии для std::chrono::steady_clock::period от 24.06.2015 11:31

Изменено 24.06.2015 11:35 watchmaker

Здравствуйте, B0FEE664, Вы писали:

BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?

Цитата из ода одной популярной реализации:
    // Why nanosecond resolution as the default?  
    // Why have std::system_clock always count in the higest
    // resolution (ie nanoseconds), even if on some OSes the low 3
    // or 9 decimal digits will be always zero? This allows later
    // implementations to change the system_clock::now()
    // implementation any time to provide better resolution without
    // changing function signature or units.

То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
Re: гарантии для std::chrono::steady_clock::period
Здравствуйте, B0FEE664, Вы писали:

BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?

Цитата из одной популярной реализации:
    // Why nanosecond resolution as the default?  
    // Why have std::system_clock always count in the higest
    // resolution (ie nanoseconds), even if on some OSes the low 3
    // or 9 decimal digits will be always zero? This allows later
    // implementations to change the system_clock::now()
    // implementation any time to provide better resolution without
    // changing function signature or units.

То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).

Так libstd++ и libc++ всегда безусловно возвращают наносекунды, вне зависимости от реальной точности часов — как минимум с этими реализациями проверка точно бесполезна.