2010-02-11 3 views

ответ

11

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

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

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

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

+0

Начиная с версии 5.4 (ноябрь 2013 г.) OpenBSD имеет [названные семафоры] (http://www.openbsd.org/cgi-bin/man.cgi?query=sem_open&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format= HTML). См. [Это сообщение в блоге] (http://www.tedunangst.com/flak/post/sem-open-named-semaphores) – user454322

+0

Re: «Я не уверен, как именно работает неназванный межпроцессный семафор»: Вы можете поместить семафор в общую память. Кроме того, если вы создаете неназванный межпроцессный семафор в нормальной памяти, а затем вызываете 'fork()', у вас есть IPC между родительским и дочерним процессами. В любом случае, конечно, это неназванный семафор, который можно обнаружить таким образом, что именованный семафор. Но вам вообще нужен семафор, если есть какие-то другие отношения между процессами. – ruakh

1

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

Вы хотите знать: more?

1

На самом деле Семафор представляет собой инструмент синхронизации, но это считается как IPC bcoz она доступна более чем на 1 процесс

0

МОК имеют три различного использования, как обмен данными (очередь сообщений, труба, FIFO), синхронизации (файл замки, семафор, MUTEX) и сигналы.

Смежные вопросы