Семафор - это низкоуровневый примитив синхронизации, который контролирует доступ к ресурсам. Он поддерживает счетчик (счетчик доступных ресурсов) и две основные операции: ожидание (wait) и сигнал (signal).
wait()): Уменьшает счетчик. Если счетчик становится отрицательным (что указывает на отсутствие доступных ресурсов), текущий поток блокируется до тех пор, пока другой поток не вызовет сигнал.signal()): Увеличивает счетчик. Если после увеличения счетчик становится неотрицательным и есть заблокированные потоки, один из них разблокируется.Семафоры могут использоваться для:
В Darwin (основа iOS):
swift
Основные типы семафоров: