std::unique_lock
std::unique_lock<std::mutex> lock1(mutex1, std::defer_lock);//defer_lock:mutex1没有被锁住
//代码块
lock1.lock();
std::cout << str << " : " << id << std::endl;
lock1.unlock();//解锁,只锁住了cout函数
//代码块
lock1.lock();
lock1.unlock();//再次上锁
//。。。
lock1.lock();//解锁,
std::lock_guard 和 std::unique_lock 都不可以被复制,
std::unique_lock可以被移动,可以将mutex从一个lock1移动到lock2
std::unique_lock<std::mutex> loker2=std::move(loker1);