我想将shared_mutex与共享/唯一锁一起用于读/写。
现在,如果我有2个对象并希望它们使用相同的锁,我可以将第一个互斥锁的值分配给第二个互斥锁吗? 或者我是否必须工作创建指向shared_mutex的指针,然后让它们都指向同一个对象实例?
我的意思是,这是否正常工作,两个对象都可以在同一个锁上工作?:
typedef boost::shared_mutex ReadWriteMutex;
class A {
ReadWriteMutex lock;
}
void test() {
A a = new A();
B b = new B()
b.lock = a.lock;
}
答案 0 :(得分:4)
这将无法正常工作。 shared_mutex
来自boost::noncopyable
。您想要使用的是指向互斥锁的指针或引用。
答案 1 :(得分:2)
我宁愿单独创建锁,然后将其传递给您的对象。
void test()
{
ReadWriteMutex lock;
A a(lock); // Notice there is no new here.
A b(lock);
// DO Stuff with a and b.
}