我是 C++ 11 新手,正在使用线程。我遇到了一个场景,无法复制互斥体和条件变量对象。代码是这样的......
class producer {
public:
producer(mutex m, condition_variable cv)
{
mut = m; // ERROR
cvar = cv; // ERROR
}
private:
mutex mut;
condition_variable cvar;
}
当尝试复制构造函数中的变量时,会出现错误。似乎复制构造函数设置为删除互斥体和 cv。
有办法克服吗?我想要一个生产者和消费者类,然后从 main 函数传递互斥体和 cv。
所以基本上主函数的调用应该是这样的......
int main ()
{
mutex m;
condition_variable cv;
//Initialize mutex & cv
producer prod(m, cv);
}
最佳答案
不,这是不可能的。在 C++ 中添加了一些功能来启用此功能(非复制)。
如果您考虑一下实现,您是否会更改某种内核对象?那会是一样的吗。可能不会。这是设计使然。
关于C++ 11 : Mutex & Condition Variable Cannot be Copied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56204230/