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

标签 c macos ipc semaphore shared-memory

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

我知道在 Linux 上使用 sem_init(sem, pshared, value),在这种情况下 pshared 必须为非零,但是我找不到相关信息Mac(未实现 sem_init),我真的不想使用命名信号量,因为我需要创建很多信号量。

我在一个最小的例子上进行了试验,但它似乎不起作用,所以我想知道是我做错了什么还是根本不起作用。我也对其他进程间锁替代方案持开放态度。

最佳答案

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

关于c - Mach 信号量是否在进程之间的共享内存中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125365/

相关文章:

macos - 在 mac 上使用 macports 安装 gdal 时出错

c - 根据分隔符分割一串整数并转换为int类型?

c - 将 C 中的 Ruby block 与 SWIG 结合使用

c - 快速排序中的 Lomuto-Partition

macos - Cocoa 如何显示另一个窗口而不是主窗口

c - 我这样做对吗?将结构中的指针映射到结构外部以供 IPC 共享内存使用

c - 如何查看数字 x 的二进制补码是否可以用 n 位表示

xcode - CFURLCopyResourcePropertyForKey 失败,因为它传递了这个没有方案 : 的 URL

与子进程 stdout/stdin 通信

node.js - 从另一个 Nodejs 应用程序调用一个 Nodejs 应用程序中的 API 的方法