我发现了这个: 快速进程间同步方法
我曾经认为 pthread 互斥锁只能在同一 地址空间 中的两个线程之间共享。
那里的问题/答案似乎暗示:
如果我有两个单独的进程 A 和 B。它们有一个共享内存区域 M。我可以在 M 中放置一个 pThread 互斥体,锁定 A,锁定 B,解锁 A;并且 B 将不再阻塞互斥锁。这个对吗? pThread 互斥锁可以在两个单独的进程中共享吗?
编辑:我在 MacOSX 上使用 C++。
原文由 anon 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要在启动互斥锁时告诉它是进程共享的:
http://www.opengroup.org/onlinepubs/007908775/xsh/pthread_mutexattr_setpshared.html
特别注意,“属性的默认值是 PTHREAD_PROCESS_PRIVATE”,这意味着从不同的进程访问它是未定义的行为。