c++ mutex, unique_lock, lock_guard官方例程 , std::lock_guard<std::mutex> lk(m) 似乎可有无

最下面是c++ 官方程序
http://en.cppreference.com/w/cpp/thread/condition_variable
1.
{
std::lock_guardstd::mutex lk(m);
ready = true;
std::cout << "main() signals data ready for processing\n";
}
红色的部分似乎没有起任何作用,删掉没有任何影响,都是顺序执行下来,ready=true之后, cv.notifyone(), 然后worker_thread 就可以继续执行。为什么要加这个红色的部分。

  1. 程序中三次使用mutex
    std::mutex m;
    std::unique_lockstd::mutex lk(m);
    std::lock_guardstd::mutex lk(m);
    std::unique_lockstd::mutex lk(m);
    三次锁的都是同一个m,这里有必要锁同一个m吗,如果下面这样可以吗
    std::mutex m;
    std::mutex m1;
    std::mutex m2;
    std::unique_lockstd::mutex lk(m);
    std::lock_guardstd::mutex lk(m1);
    std::unique_lockstd::mutex lk(m2);

C/C++ code

posted @ 2018-01-09 07:29  归零  阅读(600)  评论(0编辑  收藏  举报