我的代碼,我用C++升壓線以下行:我是否需要在Boost線程函數中調用unlock()?
void threadFunc()
{
boost::mutex::scoped_lock lock(m_Mutex);
//some code here...
condition.notify_one();
}
所以我應該叫開鎖()函數的最後一行之前,如下所示?如果我不打電話給unlock(),有什麼區別?
void threadFunc()
{
boost::mutex::scoped_lock lock(m_Mutex);
//some code here...
lock.unlock();
condition.notify_one();
}
謝謝傑裏的快速回應。然後問題是:在Boost線程中,這對互斥鎖()和unlock()幾乎沒用,因爲範圍鎖在超出範圍時會自動釋放鎖,對吧? – tonga
@tonga lock()和unlock()對於不能使用scoped_lock的情況非常有用(例如鎖定一個函數並在另一個函數中解鎖)。 – Angew
謝謝Angew您的意見。 – tonga