Використання семафорів
Next:Створення множин семафорівUp:СемафориНазад:СемафориContentsIndex
Перед тим, як використовувати семафори (виконувати операції або керуючі дії), потрібно створити безліч семафорів з унікальним ідентифікатором та асоційованою структурою даних. Унікальний ідентифікатор називається ідентифікатором множини семафорів (semid); він використовується для звернень до безлічі та структури даних.
З погляду реалізації безліч семафорів є масивом структур. Кожна структура відповідає семафору і визначається наступним чином: Визначення знаходиться у файлі .
З кожним ідентифікатором безлічі семафорів асоційована структура даних, що містить наступну інформацію: Це визначення також знаходиться у файлі . Слід зазначити, що поле sem_perm цієї структури використовує як шаблон структуру ipc_perm, загальну всім засобів міжпроцесного зв'язку.
Системний виклик semget аналогічний виклику msgget (зрозуміло, із заміною слів"черга повідомлень"на"множина семафорів"). Він також призначений для отримання нового чи опитування існуючого ідентифікатора, а потрібна дія визначається значенням key аргументу. В аналогічних ситуаціях semget зазнає невдачі. Єдина відмінність полягає в тому, що при створенні потрібно за допомогою аргументу nsems вказувати кількість семафорів у множині.
Після того, як створено безліч семафорів з унікальним ідентифікатором та асоційована з ним структура даних, можна використовувати системні виклики semop для операцій над семафорами та semctl для виконання керуючих дій.