我有一个以 std::mutex 作为成员的类。我正在尝试创建此类类的数组
class C
{
int x;
std::mutex m;
};
int main()
{
C c[10];
//later trying to create a temp C
C temp = c[0];
}
显然以上是不可能的,因为互斥对象是不可复制的。解决它的方法是通过复制构造函数。
但是,我在创建复制构造函数时遇到问题。我努力了
C (const C &c)
{
x = c.x;
//1. m
//2. m()
//3. m = c.m
}
我不确定这 3 个选择中的正确语法是什么。请帮忙。
原文由 bhavesh 发布,翻译遵循 CC BY-SA 4.0 许可协议
简短的回答你不复制互斥锁。
让我们从基础开始,互斥锁是互斥的简称,即您要确保,当有多个线程时,您不希望它们并行更改/修改值。您想要序列化访问或修改/读取,以便读取的值有效。
在上述情况下,您正在将新值复制到变量中。在这种情况下,您无需使用互斥锁,因为您正在创建新对象。