0
点赞
收藏
分享

微信扫一扫

qnx平台 std库condition_variable数据结构返回状态不一致问题

安七月读书 2022-03-12 阅读 29
数据结构

问题现象

目的是实现超时1分钟没有tcp socket连接,重新尝试进行连接,使用std::condition_variable 里面的wait_for( std::unique_lockstd::mutex, long time),结果函数返回状态为std::cv_status::timeout 超时返回还是正常通知notify_all返回。目前遇到是状态值不对,实际是超时返回但结果是通知返回。

分析解决

目前上述代码在PC端运行没有遇到过,但是后来编译移植到qnx平台上偶尔会出现上述现象,可能是不通环境下对条件变量实现不一致。网上查找资料发现有类似情况,比如虚假唤醒和唤醒丢失,但我遇到不像上述情况。最后处理就是避免使用wait_for来进行定时判断。或者使用wait_for带Period参数的版本。

举报

相关推荐

0 条评论