PHP sem_acquire() - в каком порядке выполняются "ожидающие" процессы
Так что семафоры в PHP очень удобны для синхронизации заданий / заданий (точнее, процесса).
Скажем, 1 процесс получает доступ к семафору и начинает делать свое дело (= работа). 3 других процесса запускают sem_acquire(), чтобы получить доступ, в некотором порядке. Все они блокируются, ожидая освобождения семафора и назначения его каждому.
Вопрос: в каком порядке будут выполняться 3 отдельных процесса? Общая логика гласит, что они будут выполнены в порядке поступления (и будут заблокированы), сначала обслужены (выпуск на работу), но я не видел этого утверждения в официальной документации.
Кто-нибудь может подтвердить или исправить меня? Спасибо!
1 ответ
Я написал сценарий, демонстрирующий, что ДА, они обслуживаются в порядке очереди. Это было очень важно для моего приложения.
Вы также можете продемонстрировать это - создайте следующий thread.php и затем вызовите его с помощью этого сценария оболочки.
PHP sem_acquire()
вызовы функций до semop()
системный вызов, который, по-видимому, не дает никаких гарантий относительно того, в каком процессе ожидания заказа будет получен семафор.