Boost - shared_mutex必须是同一个实例吗?

时间:2011-04-03 07:19:10

标签: c++ multithreading boost locking

我想将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;
}

2 个答案:

答案 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.
}