我的代码如下:
boost::mutex::scoped_lock lck(mQueueMutex);
while (true)
{
...
// unlock the queue while we exec the job
lck.unlock();
...
// lock the queue again
lck.lock();
}
我希望做这样的事情:
boost::mutex::scoped_lock lock(mQueueMutex);
while (true)
{
...
// unlock the queue while we exec the job
{
boost::mutex::scoped_unlock unlock(lock);
...
}
}
我几乎可以肯定我以前见过这个......或者至少是关于它的讨论,但我找不到它。
答案 0 :(得分:4)
您正在寻找Boost.Threads Reverse Lock:
reverse_lock
反转锁的操作:它提供RAII风格,在施工时解锁,并在销毁时将其锁定。此外,它会暂时转移所有权,因此无法使用锁定锁定互斥锁。