提升线程移动分配与移动构造函数

时间:2011-05-26 07:18:04

标签: c++ boost boost-thread doc

用于

的移动构造函数状态的Boost.Thread库规范

移动构造函数:

  

效果:转移所有权   由其他(如果有)管理的线程   新构造的boost :: thread   实例

而对于移动分配:

  

转移线程的所有权   由其他(如果有的话)管理到*。   如果之前有一个帖子   与*此关联然后该线程   是分离的。

显然,对于移动分配,明确声明先前的线程对象已分离。

由于尚未定义boost :: thread对象的复制,并且只能移动所有权,这是否意味着使用Move Constructor,以前的所有者线程不会分离?

或者这只是一个文件疏忽?

3 个答案:

答案 0 :(得分:6)

你是误会。标记线程对象A和B,以及实际线程T。

如果B拥有T,则从B移动构造A意味着A现在拥有T,B则不拥有任何东西 如果B拥有T,则移动从B分配A意味着A现在拥有T,B不拥有任何东西,以及之前拥有的A不属于任何(又名,分离)。

答案 1 :(得分:4)

这是一个move- 构造函数 - 如果该对象刚刚存在,那么以前的所有者可以存在什么?

答案 2 :(得分:3)

不同之处在于,当移动构造时,新的线程对象之前不存在,因此它没有先前的线程。

移动分配时,从两个线程对象开始,最后至少有一个为空。