C++ 如何处理移动类型中的条件变量
有一个如何为包含的类编写移动构造函数的方法。但是我想知道为包含的对象实现移动构造函数的过程是什么。但是这些答案中的移动构造函数/赋值操作符不会移动互斥对象。它只是使用互斥锁来锁定对对象的访问,就像C++ 如何处理移动类型中的条件变量,c++,multithreading,c++11,condition-variable,C++,Multithreading,C++11,Condition Variable,有一个如何为包含的类编写移动构造函数的方法。但是我想知道为包含的对象实现移动构造函数的过程是什么。但是这些答案中的移动构造函数/赋值操作符不会移动互斥对象。它只是使用互斥锁来锁定对对象的访问,就像A的任何其他成员函数一样。因此,它是基于互斥锁的用途的假设。“移动”对象不会移动当前已锁定对象的人的锁。因此,您希望条件变量有什么行为??对于作为复合对象的一部分时,特别是与非身份基本数据混合时,互斥体和条件变量等基本身份类型(其身份对其状态至关重要的类型)应该具有什么样的语义,目前尚不清楚。通常不能移
A
的任何其他成员函数一样。因此,它是基于互斥锁的用途的假设。“移动”对象不会移动当前已锁定对象的人的锁。因此,您希望条件变量有什么行为??对于作为复合对象的一部分时,特别是与非身份基本数据混合时,互斥体和条件变量等基本身份类型(其身份对其状态至关重要的类型)应该具有什么样的语义,目前尚不清楚。通常不能移动或复制它们的标识(如果它们是值类型)。像std::future
这样的类型拥有一个标识,但它们本身不是标识;可以通过移动标识来移动它们。简而言之,它取决于您希望复制或移动它的含义,如Nicol所述。@NicolBolas是的,如示例所示,有一些正确的算法可以为具有互斥体的类编写移动构造函数/赋值运算符。我正在为条件变量
寻找类似的算法。也许这很简单。但一个解释将是有用的。