std::condition_variable зависит от системных часов

У меня есть код, который использует condition_variable. Когда системные часы устанавливаются в обратном направлении, condition_variable будет ждать намного дольше, потому что использует system_clock вместо Steady_Clock. Я видел некоторые обходные пути, опубликованные здесь для этой проблемы. Вот предыдущая ветка v">Как справиться с изменением системных часов во время ожидания std::condition_variable? Ни один из обходных путей не показался особенно элегантным. В моем случае я делаю кросс-компиляцию для встроенной системы Linux. Я решил исправить проблему, переместив включаемый файл condition_variable в свой проект и изменив его для использования chrono::steady_clock вместо chrono::system_clock. Мне не нравится изменять системные включаемые файлы. Два вопроса: 1. Есть ли причина для condition_variable использовать system_clock? Почему в стандарте используется system_clock? Мне кажется, что изменение стандартного включения для использования устойчивых часов не сломает код. 2. Есть ли у кого-нибудь лучшее предложение?


person JVW    schedule 08.02.2020    source источник
comment
"У меня есть код, в котором используется условная_переменная". Не могли бы вы поделиться этим кодом в своем вопросе? Как бы то ни было, это очень интересный вопрос, но вы могли бы облегчить помощь членам сообщества, предоставив более подробную информацию.   -  person NicholasM    schedule 08.02.2020
comment
Извините, я не могу поделиться кодом. Я отредактировал вопрос, включив ссылку на предыдущую дискуссионную ветку по этому вопросу.   -  person JVW    schedule 10.02.2020