以下の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);
...
}
ここで著者は以下のように述べています
ミューテックスは共有データへのアクセスを制御するために使用されますが、検出タスクと反応タスクがそのような仲介を必要としない可能性は十分にあります。たとえば、検出タスクはグローバル データ構造の初期化を担当し、それを反応タスクに引き渡して使用する場合があります。検出タスクが初期化後にデータ構造にアクセスしない場合、および検出タスクが準備完了を示す前に反応タスクがアクセスしない場合、2 つのタスクはプログラム ロジックを通じて互いの邪魔にならないようにします。ミューテックスは必要ありません。
上記のテキストについて、私は理解するのが難しい
著者が「2 つのタスクがプログラム ロジックを介して互いの邪魔にならないようにする」とはどういう意味ですか?
作成者がミューテックスを必要としないとはどういう意味ですか?