バイナリ ミューテックスの代わりにカウント セマフォを使用する標準的な例は、a) 交換可能で、b) 複数の利用可能なリソースの数が限られている場合です。
たとえば、一度に最大 10 人のリーダーがデータベースにアクセスできるようにする場合は、10 に初期化されたカウント セマフォを使用して、リソースへのアクセスを制限できます。各リーダーは、リソースにアクセスする前にセマフォを取得して、使用可能なカウントを減らす必要があります。カウントが 0 になると (つまり、10 人のリーダーがデータベースにアクセスし、まだデータベースを使用している)、他のすべてのリーダーはロックアウトされます。リーダーが終了すると、セマフォ カウントを 1 増やして、リソースを使用しなくなったことを示し、他のリーダーがセマフォ ロックを取得して代わりにアクセスできるようになります。
ただし、カウントされたセマフォは、他のすべての同期プリミティブと同様に、多くのユース ケースがあり、枠にとらわれずに考えるだけの問題です。ミューテックスと追加のロジックで解決することに慣れている多くの問題が、セマフォを使用するとより簡単かつ簡単に実装できることに気付くかもしれません。ミューテックスはセマフォのサブセットです。つまり、ミューテックスでできることはすべてセマフォで行うことができます (カウントを 1 に設定するだけです)。ミューテックスだけではできません。
結局のところ、通常は、1 つの同期プリミティブで十分です (スレッド同期の "turing-complete" と考えてください)。ただし、それぞれが異なるアプリケーションに合わせて調整されており、いくつかのカスタマイズと追加の接着剤を使用して入札を強制することはできますが、別の同期プリミティブの方がジョブにより適している可能性があります。