Является ли семафор механизмом IPC?
Является ли семафор механизмом IPC?
Ответ 1
Да, на многих платформах семафоры могут синхронизировать между процессами. Для этого вы должны использовать "named" семафоры - несколько процессов обращаются к объекту через имя, похожее на объекты файловой системы.
В POSIX вы можете создавать именованные семафоры через sem_open()
. Для неименованных семафоров, если второй параметр sem_init()
отличен от нуля, он может быть межпроцессом, хотя я не уверен точно, как должен работать неназванный межпроцессный семафор.
Обратите внимание, что в некоторых системах эти функции могут терпеть неудачу с ENOSYS
, если семафоры interprocess не поддерживаются (например, OpenBSD).
В Windows вы можете создавать именованные семафоры через CreateSemaphore()
, как упоминал @sergiom.
Ответ 2
Это зависит от операционной системы
В Windows семафоры могут быть доступны между процессами с помощью функций CreateSemaphore() и OpenSemaphore()
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx
Ответ 3
Семафоры POSIX могут быть неназванными или по имени. Без названия семафоры распределенных в памяти процесса и инициализируется. Без названия семафоры могут могут использоваться более чем одним процессом, в зависимости от того, как семафор выделено и инициализировано. [...]
Вы хотите знать еще?
Ответ 4
На самом деле Семафор - это инструмент синхронизации, но он считается как IPC bcoz, к которому обращаются более чем 1 процесс
Ответ 5
IPC имеет три разных типа использования, таких как обмен данными (очередь сообщений, PIPE, FIFO), синхронизация (блокировки файлов, семафор, MUTEX) и сигналы.