Example(实例)
This is asking for deadlock:
下面的代码会引发死锁:
// thread 1
lock_guardmutex> lck1(m1);
lock_guard...mutex> lck2(m2);
// thread 2
lock_guardmutex> lck2(m2);
lock_guardmutex> lck1(m1);
Instead, use...lock():
使用lock代替:
// thread 1
lock(m1, m2);
lock_guardmutex> lck1(m1, adopt_lock);
lock_guardmutex>...lck2(m2, adopt_lock);
// thread 2
lock(m2, m1);
lock_guardmutex> lck2(m2, adopt_lock);
lock_guardmutex, mutex> lck1(m1, m2);
// thread 2
scoped_lockmutex, mutex> lck2(m2, m1);
Here, the writers