信号量是一种IPC机制吗?
信号量是一种IPC机制吗?
Is semaphore an IPC mechanism?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
信号量是一种IPC机制吗?
Is semaphore an IPC mechanism?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
是的,在许多平台下信号量可以跨进程同步。为此,您可以使用“命名”信号量——多个进程通过名称访问对象,类似于文件系统对象。
在 POSIX 中,您可以通过
sem_open() 创建命名信号量
。对于未命名信号量,如果第二个参数为sem_init()
是非零,它可以是进程间的,尽管我不确定未命名的进程间信号量应该如何工作。请注意,在某些系统上,如果不支持进程间信号量(例如 OpenBSD),这些函数可能会因
ENOSYS
而失败。在 Windows 中,您可以通过
CreateSemaphore( )
正如@sergiom 提到的。Yes, under many platforms semaphores can synchronize across processes. You would use "named" semaphores for this -- multiple processes access the object via a name, similar to filesystem objects.
In POSIX, you can create named semaphores via
sem_open()
. For unamed semaphores, if the second parameter tosem_init()
is nonzero, it can be interprocess, though I'm not sure exactly how an unnamed interprocess semaphore is supposed to work.Note that on some systems these functions may fail with
ENOSYS
if interprocess semaphores aren't supported (for example OpenBSD).In Windows, you can create named semaphores via
CreateSemaphore()
as @sergiom has mentioned.这取决于操作系统。
在 Windows 中,可以使用 CreateSemaphore() 和 OpenSemaphore() 函数在进程之间访问命名信号量
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx
It depends on the operating system
In Windows named semaphores can be accessed between processes using the CreateSemaphore() and OpenSemaphore() functions
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx
实际上Semaphore是一个同步工具,但它被算作一个IPC,因为它被超过1个进程访问
Actually Semaphore is a synchronisation tool but it is counted as an IPC bcoz it is accessed by more than 1 process
您想了解更多< /a>?
Would you like to know more?