std::mutex m_utex1;
int ncount = 0;
void mythread1()
{
for (int i = 0; i < 100;i++)
{
unique_lock<std::mutex> lc(m_utex1);
cout << ncount << " ";
}
}
void mythread2()
{
for (int i = 0; i < 100; i++)
{
unique_lock<std::mutex> lc(m_utex1);
std::mutex *pMutex = lc.release();
ncount++;
pMutex->unlock();
}
}
void main()
{
std::thread t1(mythread1);
t1.detach();
std::thread t2(mythread2);
t2.detach();
cout << "I love China!\n";
system("pause");
}
结果:
注意:如果原来锁对象是锁住状态,那么程序员有责任在使用完之后,将锁释放。