我有一個函數一些代碼,是這樣的:我應該讓我的MutexLock變得不穩定嗎?
void foo() {
{ // scope the locker
MutexLocker locker(&mutex);
// do some stuff..
}
bar();
}
函數調用bar()
也鎖定了互斥。
我遇到了一個程序崩潰的問題(對於尚未提供堆棧跟蹤或更多細節的其他人),除非bar
內部的互斥鎖被禁用。
是否有可能一些優化搞亂了我的範圍locker
實例的範圍,如果是的話,會使互斥鎖volatile
修復它?這是一個壞主意嗎?
謝謝。
做酒吧和富使用相同的互斥?如果是這樣,你的互斥鎖支持重新鎖定? – Chang
@Change - 爲什麼?爲什麼?我的意思是,如果它們是不同的互斥體,問題的重點是什麼?而重新鎖定只是在尋求麻煩。 – sje397
我的意思是試圖獲得你已經在同一個線程中獲得的鎖。並非所有的互斥體實現都支持這種操作。volatile只是禁用編譯器優化訪問變量。 – Chang