为互斥锁提升范围解锁

时间:2014-06-18 17:16:42

标签: c++ multithreading boost

我的代码如下:

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);

        ...
    }

}

我几乎可以肯定我以前见过这个......或者至少是关于它的讨论,但我找不到它。

1 个答案:

答案 0 :(得分:4)

您正在寻找Boost.Threads Reverse Lock

  

reverse_lock反转锁的操作:它提供RAII风格,在施工时解锁,并在销毁时将其锁定。此外,它会暂时转移所有权,因此无法使用锁定锁定互斥锁。