用于
的移动构造函数状态的Boost.Thread库规范移动构造函数:
效果:转移所有权 由其他(如果有)管理的线程 新构造的boost :: thread 实例
而对于移动分配:
转移线程的所有权 由其他(如果有的话)管理到*。 如果之前有一个帖子 与*此关联然后该线程 是分离的。
显然,对于移动分配,明确声明先前的线程对象已分离。
由于尚未定义boost :: thread对象的复制,并且只能移动所有权,这是否意味着使用Move Constructor,以前的所有者线程不会分离?
或者这只是一个文件疏忽?
答案 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)
不同之处在于,当移动构造时,新的线程对象之前不存在,因此它没有先前的线程。
移动分配时,从两个线程对象开始,最后至少有一个为空。