Cla*_*diu 7 c++ multithreading boost std c++11
是否可以混合和匹配来自boost::thread和的东西std::thread,或者是否应该为每个使用一组函数?
我问,因为我的代码使用了boost::threads,但是我发现boost::this_thread::sleep_for在设置系统时间时行为不正常,但std::this_thread::sleep_for确实如此,所以我想改变我的睡眠函数调用并避免在可能的情况下将所有boost::threads改为std::threads .
在实践中,你可能会侥幸逃脱,因为这些实现使用相同的实现(例如pthread在Linux上)。
但是,您将打破不变量。简单的例子:Boost Thread 的中断点无法与非 Boost 同步原语(包括std::this_thread::sleep_*)一起工作。
因此,我建议不要实际混合库来控制相关线程,以免您冒遇到意外的风险 \xc2\xb9
\n\n当然,如果库有完全独立的关注点(例如,它们在内部使用线程,“在黑匣子中”),那么将这些库组合在一个进程中应该没有问题。
\n\n\xc2\xb9 我可以看到死锁正在发生,并且数据竞争/泄漏不需要大量的想象力(想想线程本地数据支持/call_once/ set_value_at_thread_exit...)
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |