最下面是c++ 官方程序
http://en.cppreference.com/w/cpp/thread/condition_variable
{
std::lock_guard<:mutex> lk(m);
ready = true;
std::cout << "main() signals data ready for processing\n";
}
红色的部分似乎没有起任何作用,删掉没有任何影响,都是顺序执行下来,ready=true之后, cv.notifyone(), 然后worker_thread 就可以继续执行。为什么要加这个红色的部分。程序中三次使用mutex
std::mutex m;
std::unique_lock<:mutex> lk(m);
std::lock_guard<:mutex> lk(m);
std::unique_lock<:mutex> lk(m);
三次锁的都是同一个m,这里有必要锁同一个m吗,如果下面这样可以吗
std::mutex m;
std::mutex m1;
std::mutex m2;
std::unique_lock<:mutex> lk(m);
std::lock_guard<:mutex> lk(m1);
std::unique_lock<:mutex> lk(m2);
C/C++ code