Мьютекс — это бинарный семафор, который либо свободен (значение 1), либо занят (значение 0). Он используется для защиты критических секций и обеспечивает взаимоисключающий доступ к ресурсу. Только поток, который захватил мьютекс, может его освободить.
Семафор — это обобщение мьютекса, представляющее собой счетчик. Он может принимать неотрицательные значения и используется для управления доступом к ограниченному количеству ресурсов. Поток может захватить семафор, если счетчик больше нуля (уменьшая его), и освободить семафор (увеличивая счетчик). Семафор может быть освобожден другим потоком, не тем, который его захватывал.
Основные отличия:
c
Сравнение в таблице:
| Характеристика | Мьютекс | Семафор |
|---|---|---|
| Тип | Объект синхронизации (бинарный семафор) | Объект синхронизации (счетчик) |
| Значение | 0 (занят), 1 (свободен) | Неотрицательное число |
| Назначение | Защита критических секций, взаимоисключение | Управление доступом к ограниченным ресурсам |
| Владение | Имеет владельца (поток, захвативший мьютекс) | Не имеет четкого понятия владения |
| Кто может освободить | Только владелец | Любой поток |