Учебник по основам PHP. PHPBeginner



         

Разделяемая память - часть 2


shmop_read

Чтение данных из блока разделяемой памяти

string shmop_read (int shmid, int start, nnt count)

Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.

shmop_write

Запись данных в блок разделяемой памяти

int shmop_write (int shmid, string data, int offset)

Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.

shmop_delete

Удаление блока разделяемой памяти

int shmop_delete (int shmid)

В аргументе shmid указывается дескриптор блока.

В случае успеха возвращает 1, а при ошибке — 0.

shmop_close

Закрытие блока разделяемой памяти

int shmop_close (int shmid)

В аргументе shrald указывается дескриптор блока.

Семафоры

Данная группа функций позволяет использовать семафоры и разделяемую память (System V). Семафоры могут использоваться для реализации доступа к системным ресурсам в эксклюзивном режиме (или ограничивать число процессов, одновременно использующих один ресурс). Сами по себе семафоры не защищают от одновременного использования ресурса, а используются для синхронизации.

Операционные системы Unix имеют следующие ограничения:

  • SHMMAX — максимальный размер блока разделяемой памяти, обычно 131 072 байта;
  • SHMMIN — минимальный размер блока разделяемой памяти, обычно 1 байт;
  • SHMMNI — максимальное число блоков разделяемой памяти в системе, обычно 100;
  • SHMSEG — максимальное число блоков разделяемой памяти для одного процесса, обычно 6.
  • Эти функции не работают в Windows.

    sem_get

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

    int sem_get (int key [, int max_acquire [, int perm]])

    Возвращает дескриптор семафора с идентификатором key или FALSE — при ошибке.

    При отсутствии такого семафора он создается, и в аргументах тах_ acquire и perm можно задать: число процессов, которые могут заблокировать этот семафор (по умолчанию 1 — «никакой процесс, кроме данного»), и нрава доступа к нему (по умолчанию 0666).

    См. также: sem_acquire() и sem_release().




    Содержание  Назад  Вперед