Windows XP以前のWindows APIでは同期プリミティブとしての条件変数(condition variable)が提供されない。セマフォ(semaphore)やミューテックス(mutex)/クリティカルセクション*1を組み合わせて、条件変数プリミティブを実装するアルゴリズムおよびコード実例のメモ。 実装方法 条件変数プリミティブのメジャーな実装アルゴリズムとして Alexander Terekhov's "Algorithm 8a" がある。2008年頃のcomp.programming.threads上での議論がベースとなっている。 このアルゴリズムでは、条件変数プリミティブの内部実装に “2つのセマフォ、2つのミューテックス、3つの整数型変数” を利用する。Windows APIにはタイムアウト付きセマフォ待機関数(WaitForSingleObject)が存在するため、タ