考慮這個簡單的代碼:爲什麼即使您擁有互斥鎖,互斥鎖try_lock也會返回false?
boost::mutex m;
m.lock();
bool locked = m.try_lock();
std::cout<< (!locked? "Can't use lock" : "Can use lock.")<<std::endl;
system("pause");
代碼打印的Can't use lock
。這是一個問題,因爲在我的程序中,只有當線程對鎖擁有獨佔權時,我才需要執行異步操作。所以:
- 爲什麼try_lock在我擁有該互斥鎖時返回false?
- 如何創建僅由擁有該鎖的線程執行的代碼塊?
http://www.boost.org/doc/libs/1_31_0/libs/thread/doc/recursive_mutex.html –