标签:
1. 来自链接http://en.cppreference.com/w/cpp/thread/condition_variable_any/wait
添加注释
std::condition_variable_any cv; std::mutex cv_m; // This mutex is used for three purposes: // 1) to synchronize accesses to i // 2) to synchronize accesses to std::cerr // 3) for the condition variable cv int i = 0; void waits() { std::unique_lock<std::mutex> lk(cv_m); i++; std::cerr << "Waiting... \n"; cv.wait(lk); //wait会释放锁,其他的因锁被block的线程会继续,一旦收到notification锁会继续被占用 std::cerr <<i<< "...finished waiting. i == 1\n"; } void signals() { std::this_thread::sleep_for(std::chrono::seconds(5)); { std::lock_guard<std::mutex> lk(cv_m); std::cerr << "Notifying...\n"; } cv.notify_all(); std::cerr << "signals... \n"; } int main() { std::thread t1(waits), t2(waits), t3(waits), t4(signals); t1.join(); t2.join(); t3.join(); t4.join(); }
标签:
原文地址:http://www.cnblogs.com/anit/p/4727531.html