2011-04-03 24 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. 
} 
相關問題