PHP sem_acquire() - в каком порядке выполняются "ожидающие" процессы

Так что семафоры в PHP очень удобны для синхронизации заданий / заданий (точнее, процесса).

Скажем, 1 процесс получает доступ к семафору и начинает делать свое дело (= работа). 3 других процесса запускают sem_acquire(), чтобы получить доступ, в некотором порядке. Все они блокируются, ожидая освобождения семафора и назначения его каждому.

Вопрос: в каком порядке будут выполняться 3 отдельных процесса? Общая логика гласит, что они будут выполнены в порядке поступления (и будут заблокированы), сначала обслужены (выпуск на работу), но я не видел этого утверждения в официальной документации.

Кто-нибудь может подтвердить или исправить меня? Спасибо!

1 ответ

Я написал сценарий, демонстрирующий, что ДА, они обслуживаются в порядке очереди. Это было очень важно для моего приложения.

Вы также можете продемонстрировать это - создайте следующий thread.php и затем вызовите его с помощью этого сценария оболочки.

PHP sem_acquire() вызовы функций до semop() системный вызов, который, по-видимому, не дает никаких гарантий относительно того, в каком процессе ожидания заказа будет получен семафор.

Другие вопросы по тегам