Семафор — это примитив синхронизации потоков, который управляет доступом к ограниченному ресурсу. Он поддерживает целочисленный счётчик.
Основные операции:
wait()
(или P
/ acquire
): Уменьшает счётчик на 1. Если счётчик становится отрицательным, поток блокируется до тех пор, пока другой поток не выполнит signal()
.signal()
(или V
/ release
): Увеличивает счётчик на 1. Если есть заблокированные потоки, один из них разблокируется.Типы семафоров:
Пример использования на Swift для ограничения количества одновременно работающих задач:
swift
Семафор — это примитив синхронизации потоков, который управляет доступом к ограниченному ресурсу. Он поддерживает целочисленный счётчик.
Основные операции:
wait()
(или P
/ acquire
): Уменьшает счётчик на 1. Если счётчик становится отрицательным, поток блокируется до тех пор, пока другой поток не выполнит signal()
.signal()
(или V
/ release
): Увеличивает счётчик на 1. Если есть заблокированные потоки, один из них разблокируется.Типы семафоров:
Пример использования на Swift для ограничения количества одновременно работающих задач:
swift
Register or sign in to get access to full answers for all questions from the question bank.