sem_get

(PHP 4, PHP 5, PHP 7, PHP 8)

sem_getПолучает идентификатор семафора

Описание

sem_get(
    int $key,
    int $max_acquire = 1,
    int $permissions = 0666,
    bool $auto_release = true
): SysvSemaphore|false

Функция sem_get() возвращает идентификатор, который используется для доступа к семафору System V по заданному значению key.

Очередные вызовы функции sem_get() для того же ключа будут возвращать другие идентификаторы, однако, все они будут ссылаться на один и тот же семафор.

Если значение параметра key равно 0, то для каждого вызова функции sem_get() создаётся новый приватный семафор.

Список параметров

key

max_acquire

Число процессов, которые могут одновременно использовать семафор, задаётся через параметр max_acquire.

permissions

Права доступа к семафору. В действительности, устанавливается только если процесс — единственный, кто пользуется семафором.

auto_release

Параметр определяет, должен ли семафор автоматически освобождаться при завершении работы.

Возвращаемые значения

При успешном завершении возвращается положительный идентификатор семафора, или false, если возникла ошибка.

Список изменений

Версия Описание
8.0.0 В случае успешного выполнения функция возвращает экземпляр класса SysvSemaphore; раньше возвращался ресурс (resource).
8.0.0 Тип auto_release изменили с целого числа (int) на логическое значение (bool).

Примечания

Внимание

Когда функцию sem_get() вызывают для доступа к семафору, который создали вне PHP, обращают внимание на то, что этот семафор должны были создать как набор из ттрёх семафоров (например, путём указания 3 как значения для параметра nsems во время вызова C-функции semget()), иначе PHP не сможет обратиться к семафору.

Смотрите также

  • sem_acquire() - Захватывает семафор
  • sem_release() - Освобождает семафор
  • ftok() - Преобразовывает путь и идентификатор проекта в ключ System V IPC