Этот модуль предоставляет функции семафоров, используя семафоры System V. Семафоры могут использоваться для обеспечения эксклюзивного доступа к русурсам используемой машины или для ограничения числа процессов, которые могут одновременно использовать ресурс.
Поддержка разделяемой памяти также включена. Она совместима с System V - совместимыми системами.
int sem_get
(int key, int [
max_acquire
]
, int [
perm
]
);
Возвращает положительный индентификатор семафора при успехе или false при ошибке.
sem_get() возвращает идентификатор, который может быть использован для доступа к семафору System V с указанным ключом. Семафор создается, если необходимо, используя биты доступа, указанные в perm (по умолчанию 0666). Число процессов, которое может быть зафиксировано семафором одновременно устанавливается в max_acquire (по-умолчанию 1). В действительности это значение устанавливается только если процесс обнаруживает, что он является единственным, присоединенным к семафору.
Повторный вызов функции sem_get() с тем же ключем вернет другой идентификатор семафора, но оба идентификатора указывают на один и тот же семафор.
См. также: sem_acquire() and sem_release() .
int sem_acquire
(int sem_identifier);
Возвращает true при успехе, false при ошибке.
sem_acquire() блокируется (если необходимо) до тех пор, пока семафор сможет быть зафиксирован. Процесс, пытающийся зафиксировать семафор, который уже зафиксирован, буде блокирован навсегда, если фиксация семафора вызовет превышение его max_acquire значения..
После обработки запроса, любые семафоры, зафиксированные процессом, но не освобожденные вручную, будут освобождены автоматически с выдачей предупреждения.
См. также: sem_get() and sem_release() .
int sem_release
(int sem_identifier);
Возвращает true при успехе и false при ошибке.
sem_release() освобождает семафор если он зафиксирован в данное время вызывающим процессом, иначе выдается предупреждение.
После освобождения семафора функция sem_acquire() может быть вызвана для ре-фиксации его.
См. также: sem_get() and sem_acquire() .
int shm_attach
(long key, long memsize, long perm);
Создает или открывает разделяемую память с указанным ключем и размером памяти.
int shm_detach
(long id);
Отсоединяет от разделяемой памяти с указанным id , созданным с помощью функции shm_attach() . Помните, что разделяемая память все еще существует в Unix-системе и данные все еще присутствуют.
int shm_put_var
(int id, long variable_key, mixed variable);
Вставляет или обновляет переменную с указанным variable_key. Все типы переменных (double, long, string, array) поддерживаются. Функция serialize() может быть использована для хранения данных.
mixed shm_get_var
(int id, long variable_key);
Считывает переменную с указанным variable_key . Переменная все еще присутствует в разделяемой памяти. Функция unserialize() может быть использована для декодирования данных.
int shm_remove_var
(int id, long variable_key);
Удаляет переменную с указанным variable_key из разделяемой памяти.
int shm_remove
(long key);
Удаляет разделяемую память из Unix-системы. Все данные будут уничтожены.