【发布时间】:2014-06-05 21:23:23
【问题描述】:
我有一个关于将 boost::threads 与一些 c++11 标准项目混合和匹配的问题,这有效吗?我还没有真正测试过任何东西,但我正在使用一个使用所有 boost::threads 和线程组以及中断功能的系统,这些功能你没有按照标准开箱即用,所以没有改变。我们的 boost 1.50 版本没有最新的 std::atomic 和内存排序的东西。我想知道我是否可以将 std::atomic 和 std:: 内存排序操作 load/fectch_add 等(获取/释放,放松)与 boost 线程一起使用,并获得与 std::thread 相同的结果。这些都是我的 linux 机器上的 pthread,所以我想答案是肯定的,我可以混合搭配。虽然,我只是想确认一下是否有人在混合 boost::thread 和 std::thread apis 之间有任何兼容性问题。
【问题讨论】:
-
我会更关心将 C++03 与 C++11 代码兼容的代码混合在一起。就个人而言,我仍然认为对 C++11 的“线程”支持基本上没有用,而且设计非常陈旧。
-
@user2485710 这是一个相当大胆的声明。你愿意证明为什么 C++11 线程支持“基本上没用”吗?
-
@JBentley 它不是基于任务的,它不支持“信号”或异步操作,
std::async基于线程,还有一些其他关于设计和实现的问题,例如std::future的析构函数阻塞且设计不良。可能有一些有用的东西,但我真的不认为有人会用它来取得好成绩,而且在 C++14 中会有一些修改会以不同的行为影响 C++11 线程模型。跨度>
标签: c++ multithreading c++11 boost