2011-04-03 66 views
1

我想使用共享/唯一锁进行读/写的shared_mutex。Boost - 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; 
} 

回答

4

这将无法正常工作。 shared_mutex来自boost::noncopyable。你想使用的是一个指针或对互斥量的引用。

+0

好吧,你认为使用共享指针boost :: shared_ptr 会起作用吗? – 2011-04-03 07:34:27

+0

@Yochai:我相信。 – 2011-04-03 07:39:37

2

我宁愿seprately创建锁,然后将它传递给你的对象。

void test() 
{ 
    ReadWriteMutex lock; 
    A a(lock);    // Notice there is no new here. 
    A b(lock); 

    // DO Stuff with a and b. 
} 
相关问题