Зачем нужен Mutex? Есть ведь Monitor.
Mutex
- примитив синхронизации уровня ОС.
Monitor
- инструмент синхронизации уровня среды выполнения.
Mutex это разве не тот же семафор, только который может брать один поток?
Да, по внешним признакам. Но разве не лучше выделить специфичный кейс (как например в Mutex - одновременная работа только 1 потока) и оптимизировать работу для него, а не использовать везде обощенный инструмент (возможность для нескольких потоков в семафоре). Есть разные оптимизации для него.