Linux平台上c++11的std::condition_variable实现存在问题?

最近在跨平台移植代码的过程中遇到一个比较奇怪的问题,使用C++11特性实现的一段代码在windows平台跑的好好的,到了Linux平台上就会在特定的条件下卡住。
仔细定位了一下发现Linux平台实现condition variable的wait_until接口里面使用了绝对时间,虽然参数是steady_clock,导致定时器跑到这里之后将系统时间调整到之前的一段时间就很长时间都不会超时。
上网查了一下说是Linux上的库实现的问题,windows跟boost都没这个问题。

解决办法参考:https://stackoverflow.com/questions/51005267/how-do-i-deal-with-the-system-clock-changing-while-waiting-on-a-stdcondition-v

posted @ 2020-12-07 20:10  aij  阅读(369)  评论(0编辑  收藏  举报