我正在阅读一些 condition_variable
的示例代码:
在 cppreference 上,notify_one()
被这样调用:
https://en.cppreference.com/w/cpp/thread/condition_variable
{
std::lock_guard lk(m);
ready = true;
std::cout << "main() signals data ready for processing\n";
}
cv.notify_one();
从上面的代码可以清楚地看出,调用
notify_one()
不需要使用任何mutex
。但在cplusplus.com上,代码像这样:https://cplusplus.com/reference/condition_variable/condition_variable/。std::unique_lock<std::mutex> lck(mtx);
ready = true;
cv.notify_all();
似乎在调用notify_all()之前需要使用mutex。
我有点困惑,调用notify_*()函数是否需要mutex?
ready = true
。 - 463035818_is_not_a_number