c++ - C++ 11:互斥量和条件变量不能被复制
问题描述
我是 C++ 11 和使用线程的新手。我遇到了一个无法复制互斥锁和条件变量对象的场景。代码是这样的......
class producer {
public:
producer(mutex m, condition_variable cv)
{
mut = m; // ERROR
cvar = cv; // ERROR
}
private:
mutex mut;
condition_variable cvar;
}
当试图复制构造函数中的变量时,它会给出错误。似乎复制构造函数设置为删除互斥锁和 cv。
有没有办法克服它?我想要一个生产者和消费者类,然后从主函数传递互斥锁和 cv。
所以基本上来自 main 函数的调用应该看起来像....
int main ()
{
mutex m;
condition_variable cv;
//Initialize mutex & cv
producer prod(m, cv);
}
解决方案
不,这是不可能的。在 C++ 中添加了功能以启用此功能(非复制)。
如果您考虑实现,您是否正在更改某种内核对象?会不会一样。可能不是。这是设计使然。
推荐阅读
- pdf - Tableau 将 PDF 插入仪表板
- python - 如果单元格中存在值,则获取列名
- c# - 如何从 Azure 云应用服务获取用户 IP
- java - Swagger:为 java.util.Map 设置 @ApiModelProperty#datatype 的类型定义
- python - Pyspark:如何将数据帧拆分为块并保存它们?
- javascript - JavaScript 中的冒泡排序算法
- javascript - 从 const 值调用函数
- java - 在双精度内返回特定单位(作为整数)的更有效方法?
- string - SwiftUI:如何将 Double 与 String 组合并进行数学计算?
- javascript - javascript包含过滤器功能中的功能不起作用?