Возможная проблема g cc с функциями sleep_for и sleep_until - PullRequest
0 голосов
/ 07 января 2020

g cc, похоже, проблема с функциями sleep_for и sleep_until (из пространства имен std :: this_thread). Я делаю простой пример с будущими и условными переменными. g cc фактически использует системные часы вместо Monotoni c Часы , и это может вызвать скачки во времени. В моем примере в некоторых случаях часы скачут после, и мой тайм-аут истекает немедленно.

Ошибка должна быть такой G CC Ошибка 41861

Я вижу, что в В будущем выпуске g cc 10 ошибка, возможно, устранена, но до выхода новой версии g cc есть решение этой проблемы? Кто-то это заметил?

1 Ответ

2 голосов
/ 07 января 2020

Это действительно потрясающая ошибка, исправленная в G CC 10 ( ошибка 41861 описывает ее в контексте <condition_variable>).

В тот день, когда я столкнулся это было заманчиво прибегнуть к Boost, чтобы получить правильное поведение, но даже это было сломано до 1.61 . И в наше время было бы странно смешивать Boost и стандартный код синхронизации / потоков, так как стандартные средства обычно зрелы и предпочтительны (обнаружена ирония!).

В то время я делал замену condition_variable, который непосредственно включал функциональность POSIX.

Что бы вы ни делали с sleep_for / sleep_until, я подозреваю, что у вас мало возможностей, но вы можете сделать то же самое, извините.

...