Функции Semaphore, Shared Memory и IPC
XC. Функции Semaphore, Shared Memory и IPC
Этот модуль предоставляет оболочки для семейства функций System V IPC. Он включает семафоры, shared-память и внутрипроцессные сообщения/inter-process messaging (IPC).
Семафоры могут использоваться для предоставления эксклюзивного доступа к ресурсам на текущей машине или для ограничения количества процессов, которые могут одновременно использовать ресурс.
Этот модуль также предоставляет функции для работы с shared-памятью с использованием совместно используемой памяти System V. Shared-память может использоваться для предоставления доступа к глобальным переменным. Различные httpd-демоны и даже другие программы (такие как Perl, C, ...) могут получать доступ к этим данным, что даёт глобальный обмен данными. Помните, что shared-память НЕ защищена от одновременного доступа. Используйте семафоры для синхронизации.
Таблица 1. Ограничения Shared-памяти в ОС Unix
SHMMAX | максимальный размер shared-памяти, нормально 131072 байт |
SHMMIN | минимальный размер shared-памяти, нормально 1 байт |
SHMMNI | максимальное количество сегментов shared-памяти в системе, нормально 100 |
SHMSEG | максимальное количество сегментов shared-памяти на процесс, нормально 6 |
Функции сообщений могут использоваться для отправки и получения сообщений в/из других процессов. Они являются простым и эффективным средством обмена данными между процессами без необходимости без необходимости настройки альтернативного использования сокетов домена unix.
Примечание: эти функции не работаю на системах Windows.
- Содержание
- ftok - конвертирует pathname и идентификатор проекта в ключ System V IPC
- msg_get_queue - создаёт очередь сообщений или присоединяет к ней
- msg_receive - получает сообщение из очереди сообщений
- msg_remove_queue - разрушает очередь сообщений
- msg_send - отправляет сообщение в очередь сообщений
- msg_set_queue - устанавливает информацию в структуре данных очереди сообщений
- msg_stat_queue - возвращает информацию из структуры данных очереди сообщений
- sem_acquire - получает семафор
- sem_get - получает id семафора
- sem_release - освобождает семафор
- sem_remove - удаляет семафор
- shm_attach - создаёт или открывает сегмент shared-памяти
- shm_detach - отсоединяет от сегмента shared-паямти
- shm_get_var - возвращает переменную из shared-памяти
- shm_put_var - вставляет или обновляет переменную в shared-памяти
- shm_remove_var - удаляет переменную из shared-памяти
- shm_remove - удаляет shared-память из Unix-систем