Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何处理移动类型中的条件变量_C++_Multithreading_C++11_Condition Variable - Fatal编程技术网

C++ 如何处理移动类型中的条件变量

C++ 如何处理移动类型中的条件变量,c++,multithreading,c++11,condition-variable,C++,Multithreading,C++11,Condition Variable,有一个如何为包含的类编写移动构造函数的方法。但是我想知道为包含的对象实现移动构造函数的过程是什么。但是这些答案中的移动构造函数/赋值操作符不会移动互斥对象。它只是使用互斥锁来锁定对对象的访问,就像A的任何其他成员函数一样。因此,它是基于互斥锁的用途的假设。“移动”对象不会移动当前已锁定对象的人的锁。因此,您希望条件变量有什么行为??对于作为复合对象的一部分时,特别是与非身份基本数据混合时,互斥体和条件变量等基本身份类型(其身份对其状态至关重要的类型)应该具有什么样的语义,目前尚不清楚。通常不能移

有一个如何为包含的类编写移动构造函数的方法。但是我想知道为包含的对象实现移动构造函数的过程是什么。

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