Чем отличается мьютекс от семафора?



— Семафор может принимать любое неотрицательное целое значение, мьютекс — только 0 или 1.



— Семафор используется для синхронизации потоков и ограничения доступа к общим ресурсам. Мьютекс — только для взаимного исключения потоков.



— Операции с семафором: wait/signal. С мьютексом: lock/unlock.



— Ожидание семафора можно прервать. Блокировка мьютекса — непрерывная.



— Семафоры можно использовать для реализации ограниченных ресурсов, счетчиков, барьеров. Мьютексы — только для взаимного исключения.



— Мьютекс может быть рекурсивным, семафор — нет.



— Использование семафора часто требует больше кода и аккуратности чем мьютекса.