信号量是 IPC 机制吗?
问问题
4303 次
4 回答
11
是的,在许多平台下,信号量可以跨进程同步。您将为此使用“命名”信号量——多个进程通过名称访问对象,类似于文件系统对象。
在 POSIX 中,您可以通过sem_open()
. 对于未命名的信号量,如果 to 的第二个参数sem_init()
不为零,则它可以是进程间的,尽管我不确定未命名的进程间信号量应该如何工作。
请注意,在某些系统上,ENOSYS
如果不支持进程间信号量(例如 OpenBSD),这些功能可能会失败。
在 Windows 中,您可以通过CreateSemaphore()
@sergiom 提到的那样创建命名信号量。
于 2010-02-11T09:10:51.237 回答
2
实际上 Semaphore 是一个同步工具,但它被视为 IPC,因为它被多个进程访问
于 2010-08-31T09:22:50.653 回答
2
这取决于操作系统
在 Windows 中,可以使用 CreateSemaphore() 和 OpenSemaphore() 函数在进程之间访问命名信号量
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx
于 2010-02-11T09:01:46.967 回答
1
POSIX 信号量可以是未命名的或命名的。未命名的信号量在进程内存中分配并初始化。未命名的信号量可能被多个进程使用,这取决于信号量是如何分配和初始化的。[...]
你想知道更多吗?
于 2010-02-11T09:24:48.467 回答