【发布时间】:2012-01-21 05:26:33
【问题描述】:
我想使用共享互斥锁,因此只有在写入而不是读取向量/映射/任何内容时,线程才会被锁定。但我认为 func2() 永远不会获得唯一锁,因为 func1() 永远不会解锁。尝试获取唯一锁时,有什么方法可以不计算 shared_mutex 上的同线程锁?或者即使那样问题仍然存在?
我猜我需要找到一种方法在所有线程都达到 func2() 或释放锁后强制获取锁(一次一个线程)。
func2()
{
boost::unique_lock<boost::shared_mutex> lock_access3(shared_mutex);
/*stuff*/
lock_access3.unlock();
}
func1()
{
boost::shared_lock<boost::shared_mutex> lock_access1(shared_mutex);
func2();
lock_access1.unlock();
}
【问题讨论】:
标签: c++