「プログラミング言語C++第四版」について気が付いたことなど (21)

よく似てるけど…


42.3.4  条件変数

…( condition_variable の表の中ほど)…

cv.wait(lck) 現在のスレッドがlckを所有していなければならない。自動的に lck.unlock()を呼び出してブロックする。イベント通知を受けるか、または “擬似的に通知を受ける”とブロック解除する。ブロック解除時に lck.lock() を呼び出す

原文:

cv.wait(lck) lock must be owned by the calling thread;
atomically calls lck.unlock() and blocks;
unblocks if notified or “spuriously”;
when unblocked calls lck.lock()

考察:

atomically automatically と空目しているように思われます。
この後の x=cv.wait_until(lck,tp)でも同様にatomically自動的に になってます。

尚、”spuriously” は、(notifyされなくても)処理系によって擬似的に待機解除されることがあるということなので、待機解除されたからと言って条件が成り立っているとは限らない点に注意が必要です。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です