c++ 线程间的sharing data

mutex mtx;
1 直接调用mtx.lock、mtx.unlock 不如 lock(mtx),因为前者可能死锁
2 lock 、try_lock(mtx) 可以一次锁多个、保证不死锁,但try_lock有返回值用于判断是否成功。
3 try_lock(mtx)有时不如unique_lock lck(mtx),因为后者可以在lcx销毁时自动释放锁。unique_lock<mutex> lcx(mtx)这种构造会一直阻塞到锁住。
最佳实践是
mutex m1;
unique_lock<mutex> lcx(m1,std::defer_lock);
try_lock(lcx);