我正在阅读 Scott Meyers 所著的 Effective Modern C++ 中的条件变量,下面是文本。
std::condition_variable cv
std::mutex m
T1 (detecting task)
...
cv.notify_one();
T2 (reacting task)
...
{
std::unique_lock<std::mutex> lk(m);
cv.wait(lk);
...
}
这里作者提到如下
互斥体用于控制对共享数据的访问,但检测和反应任务完全有可能不需要这种中介。例如,检测任务可能负责初始化一个全局数据结构,然后将其交给反应任务使用。如果检测任务在初始化后从未访问过数据结构,并且如果反应任务在检测任务指示它已准备好之前从未访问过它,则这两个任务将通过程序逻辑相互避开。不需要互斥锁。
在上面的文字我很难理解
作者所说的“两个任务将通过程序逻辑相互隔离”是什么意思?
作者不需要互斥锁是什么意思?