Mach信号量在进程间共享内存中工作吗?

4

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

我知道在 Linux 上使用 sem_init(sem, pshared, value),其中 pshared 必须为非零值,但是我找不到关于 Mac 的信息(其中没有实现 sem_init),而且我也不想使用命名信号量,因为我需要创建很多。

我在一个最小的示例上进行了实验,但似乎并不起作用,所以我想知道我是否做错了什么或者它根本行不通。我也愿意尝试其他进程间锁定的替代方案。


2
这是一篇关于如何在进程之间共享 Mach 信号量的文章。请注意,应该尽量避免在用户空间使用 Mach 工具,因为它已经不推荐使用了。 - Hristo Iliev
2个回答

1

OSX不支持匿名信号量。虽然函数调用已实现以符合posix标准,但如果您检查返回代码,它们实际上会因未实现而出错。我在这里写了一篇关于OSX和未命名信号量的更多详细信息的文章,并提出了一个建议的解决方案: 未命名信号量和pososx


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接