c++ - 如果在共享内存中,pthread 互斥锁是否可以跨线程工作?

标签 c++ process mutex shared-memory pthreads

我发现了这个: Fast interprocess synchronization method

我曾经认为 pthread 互斥锁只能在同一地址空间中的两个线程之间共享

那里的问题/答案似乎暗示:

如果我有两个单独的进程 A 和 B。它们有一个共享内存区域 M。我可以在 M 中放置一个 pThread 互斥体,锁定 A,锁定 B,解锁 A;并且 B 将不再阻塞互斥锁。这个对吗? pThread 互斥锁可以在两个单独的进程中共享吗?

编辑:我在 MacOSX 上使用 C++。

最佳答案

您需要在启动互斥锁时告诉它是进程共享的:

http://www.opengroup.org/onlinepubs/007908775/xsh/pthread_mutexattr_setpshared.html

特别注意,“属性的默认值是 PTHREAD_PROCESS_PRIVATE”,这意味着从不同的进程访问它是未定义的行为。

关于c++ - 如果在共享内存中,pthread 互斥锁是否可以跨线程工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389353/

相关文章:

c++ - 我们可以将数据永久保存为数据结构吗?

c++ - 复制省略法

c++ - 不转义空字符的字符串文字

linux - 两个相互依赖的后台进程

c - C中的字符串多线程

c++ - 扫雷邻居数

c - 父进程在设置 SIGCHLD 时被阻塞

c - C 中没有 fork 的无名管道

c - 使用用户输入在 C 中跨线程同步数据

rust - 如何在 Rust 中正确改变互斥体后面的向量