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

问题现象

目的是实现超时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参数的版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值