例如
boost::thread th = boost::thread(a_lengthy_function);
th.detach();
th = boost::thread(another_function);
第一个帖子会被第二个帖子取消或影响吗?
答案 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?