2
我寫了一個簡單的代碼,其中我使用unique_lock並解鎖互斥鎖,而不是調用鎖本身的解鎖。當第一個線程進入臨界區並調用my_mutex.unlock()時,許多其他線程一起進入臨界區。在與unique_lock關聯的互斥鎖中調用解鎖會導致未定義的行爲
std::mutex my_mutex;
void sample() {
std::unique_lock<std::mutex> lock(my_mutex);
// Critical section
my_mutex.unlock();
}
這是怎麼發生的?在由unique_lock持有的互斥體上調用解鎖是否是錯誤的?謝謝!
謝謝!其實我在我的實際代碼中沒有本地互斥。我將更新問題中的代碼。 – kwadhwa