Семафоры в C# и .NET Framework - задача производитель-потребитель на объекте Semaphore
Рассматриваем объект синхронизации Semaphore. Семафор - это считающий объект с сигнальным и несигнальным состояниями. Сигнальное состояние когда счетчик больше нуля, несигнальное - когда 0. При захвате семаформа счетчик уменьшается на единицу.