以前用c语言的pthread库时,都是把mutex和cond设为公共变量,以让多个线程共用。但是对于c++的unique_lock,由于类本身包含变量,因此正确的改法是为每个线程创建自己的unique_lock。
std::mutex mtx;
void Thread(int idx)
{
std::unique_lock<std::mutex> ulk(mtx,std::defer_lock)
ulk.lock();
cout<<"idx= "<<idx<<endl;
ulk.unlock();
}
|