前回のエントリ でプロセス、スレッド、ファイバ、タスク、ジョブの違いを整理してみたところ、toshi さんから次のお題 をいただいたので、調子に乗って今回はミューテックス、セマフォ、条件変数の違いについて整理してみる。なお私がグダグダしているうちに、通りすがりの猫さんが先に解答 してくれた。そちらも合わせて参照していただきたい。 まずミューテックスとセマフォの違いから。一般に以下の点で違いがある。 ミューテックスは、ロック/非ロック の2値を管理するだけだが、セマフォは回数を管理することができる。換言すると、セマフォは個数カウンタつきのミューテックス。 セマフォの場合はいわゆる優先度逆転現象が発生する可能性がある。一方、ミューテックスには逆転現象を回避する機構が用意されていることが多い。「優先度上限プロトコル」「優先度継承プロトコル」がそれにあたる。 さらにどこまで一般的なのか分からないが