[英]Multiple-Reader, Single-Writer Lock in Boost WITH Writer Block
答案在這里 幾乎是我想要做什么。
我想要一個讀寫鎖,它將:
上面的實現不符合條件(2)。 它允許新的讀者抓住鎖並阻止作家,直到他們完成。
找到了。 我需要unique_lock
而不是upgrade_to_unique_lock
:
boost::shared_mutex _access;
void reader()
{
// get shared access
boost::shared_lock<boost::shared_mutex> lock(_access);
}
void writer()
{
// wait for old shared access readers to finish
// but block out new shared access readers
boost::unique_lock<boost::shared_mutex> uniqueLock(_access);
}
但是,這里的“ writer”方法沒有“ lock”屬性。 您是說在“ unique_lock”之前您還需要進行“ upgrade_lock”嗎? 就像是:
void writer()
{
// get upgradable access
boost::upgrade_lock<boost::shared_mutex> lock(_access);
// get exclusive access
boost::unique_lock<boost::shared_mutex> uniqueLock(lock);
// now we have exclusive access
}
還是您混合了屬性,應該是:
void writer()
{
boost::unique_lock<boost::shared_mutex> uniqueLock(_access);
// now we have exclusive access
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.