1
所以我有像read
這樣的功能,可以從多個線程同時調用。但我也有一個功能write
,需要鎖定所有read
功能。哪裏可以找到創建這種構架的例子?可變boost :: mutex是否可以分開鎖定和等待函數?
我得到,我們可以有:
mutable boost::mutex the_read_mutex;
mutable boost::mutex the_write_mutex;
和:
void write()
{
// make all new readers wait and wait for all other currently running read threads();
}
void read()
{
// do not make all new readers wait, and wait for all currently running write thread()
}
那麼如何做這樣的事?
讀者不會介入ck彼此? – Rella
@ kabumbus:這就是SHARED鎖的原因。 :)多於一個讀卡器可以採用相同的shared_lock而不被阻塞。 –
@Kabumbus讀寫器鎖實現背後的全部想法是允許讀者併發訪問,但是如果任何作者需要訪問,必須等到所有其他讀者或任何作者放棄了資源的所有權。另外,作者擁有所有權時,讀者和作者都不會被授予訪問權限。 – Praetorian