繁体   English   中英

Mach信号量是否在进程之间的共享内存中工作?

[英]Does Mach semaphore work in shared memory between processes?

我有兴趣使用信号量,使用semaphore_create(task, sem, policy, value)mach/semaphore.h ,在共享内存中同步Mac OS中的两个进程。

我知道,在Linux上使用sem_init(sem, pshared, value)pshared必须是在这种情况下不为零,但我无法找到和Mac(其中信息sem_init没有实现),我真的不希望使用命名信号量,因为我需要创建很多信号量。

我尝试了一个最小的例子它似乎不起作用,所以我想知道我做错了什么或它只是不起作用。 我也对其他进程间锁定替代方案持开放态度。

OSX不支持匿名信号量。 实现函数调用以获得posix合规性,但是如果检查返回代码,它们实际上会出现未实现的错误。 我在这里写了一篇文章,详细介绍了OSX和未命名的信号量,以及一个建议的解决方案: Unnamed-semaphores-and-pososx

这是关于semaphore_create和朋友的文档: https//developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KernelProgramming/synchronization/synchronization.html

我没有Mac,所以我无法测试任何东西,但我没有看到任何无法命名的信号量的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM