重新分配分离的boost :: thread是否安全

时间:2017-11-23 10:09:10

标签: c++ boost

例如

boost::thread th = boost::thread(a_lengthy_function);
th.detach();
th = boost::thread(another_function);

第一个帖子会被第二个帖子取消或影响吗?

2 个答案:

答案 0 :(得分:4)

来自提升doc

  

可以通过在boost :: thread对象上显式调用detach()成员函数来分离线程。在这种情况下,boost :: thread对象不再代表现在已分离的线程,而是代表非线程

     

thread()noexcept;效果:构造一个引用非线程的boost :: thread实例

所以分离的线程与默认构造的线程是一样的。所以,是的,你可以安全地移动 - 分配给默认的构造线程,而你的第二个问题的答案是否定的,两个线程是完全无关的。

仅供参考,同样适用于std :: thread ......

答案 1 :(得分:0)

这根本不重要。

正如AndréCaron所说:

  

boost :: thread对象的生命周期与本机线程的生命周期无关。 boost :: thread对象可以随时超出范围。

来自What’s the best way to delete boost::thread object right after its work is complete?