Да, на многих платформах семафоры могут синхронизироваться между процессами. Для этого вы должны использовать «именованные» семафоры - несколько процессов получают доступ к объекту через имя, аналогично объектам файловой системы.
В POSIX вы можете создавать именованные семафоры с помощью sem_open ()
. Для неименованных семафоров, если второй параметр sem_init ()
не равен нулю, он может быть межпроцессным, хотя я не совсем уверен, как должен работать безымянный межпроцессный семафор.
Обратите внимание, что в некоторых системах эти функции могут завершаться ошибкой с ENOSYS
, если межпроцессные семафоры не поддерживаются (например, OpenBSD).
В Windows вы можете создавать именованные семафоры с помощью CreateSemaphore ()
, как упоминалось в @sergiom.
Это зависит от операционной системы
В Windows именованные семафоры могут быть доступны между процессами с помощью функций CreateSemaphore() и OpenSemaphore()
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85 %29.aspx
POSIX семафоры могут быть безымянными или именованными. Именные семафоры выделяются в памяти процесса и инициализируются. Неименованные семафоры могут использоваться более чем одним процессом, в зависимости от того, как семафор выделен и инициализирован. [...]
Хотите узнать больше?
На самом деле Semaphore — это инструмент синхронизации, но он считается IPC, потому что к нему обращается более 1 процесса