Действительно ли семафор является механизмом IPC?

Действительно ли семафор является механизмом IPC?

12
задан aks 11 February 2010 в 08:45
поделиться

4 ответа

Да, на многих платформах семафоры могут синхронизироваться между процессами. Для этого вы должны использовать «именованные» семафоры - несколько процессов получают доступ к объекту через имя, аналогично объектам файловой системы.

В POSIX вы можете создавать именованные семафоры с помощью sem_open () . Для неименованных семафоров, если второй параметр sem_init () не равен нулю, он может быть межпроцессным, хотя я не совсем уверен, как должен работать безымянный межпроцессный семафор.

Обратите внимание, что в некоторых системах эти функции могут завершаться ошибкой с ENOSYS , если межпроцессные семафоры не поддерживаются (например, OpenBSD).

В Windows вы можете создавать именованные семафоры с помощью CreateSemaphore () , как упоминалось в @sergiom.

11
ответ дан 2 December 2019 в 20:17
поделиться

Это зависит от операционной системы

В Windows именованные семафоры могут быть доступны между процессами с помощью функций CreateSemaphore() и OpenSemaphore()

http://msdn.microsoft.com/en-us/library/ms682438%28VS.85 %29.aspx

2
ответ дан 2 December 2019 в 20:17
поделиться

POSIX семафоры могут быть безымянными или именованными. Именные семафоры выделяются в памяти процесса и инициализируются. Неименованные семафоры могут использоваться более чем одним процессом, в зависимости от того, как семафор выделен и инициализирован. [...]

Хотите узнать больше?

1
ответ дан 2 December 2019 в 20:17
поделиться

На самом деле Semaphore — это инструмент синхронизации, но он считается IPC, потому что к нему обращается более 1 процесса

2
ответ дан 2 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: