可以混合搭配来自的东西吗?boost::thread
and std::thread
,或者应该为每个函数使用一组函数?
我问是因为我的代码使用boost::thread
s,但我发现boost::this_thread::sleep_for
设置系统时间时表现不正常,但是std::this_thread::sleep_for
是的,所以我想改变我的睡眠函数调用并避免改变我的所有boost::thread
s to std::thread
如果可能的话。
在实践中,您可能会逃脱惩罚/因为实现使用相同的实现(例如pthread
在 Linux 上)。
然而,你will打破不变量。简单的例子:Boost Thread 的中断点无法与非 Boost 同步原语一起工作(包括std::this_thread::sleep_*
).
因此我实际上建议反对mixing用于控制相关线程的库,以免您冒遇到意外的风险 ¹
当然,如果库有完全独立的关注点(例如,它们在内部“在黑匣子中”使用线程),那么将这些库组合在一个进程中应该没有问题。
1 我可以看到死锁的发生,数据竞争/泄漏不需要太多的想象力(想想线程本地数据支持/call_once/set_value_at_thread_exit
...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)