如果在共享内存中,那么p线程互斥体是否跨线程工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

p线程互斥只能在同一个线程中的两个线程之间共享,地址空间

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

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

提问于
用户回答回答于

如果C/p线程库符合,则应该能够通过检查是否支持在多个进程中共享的互斥对象来判断它是否支持跨进程共享的互斥对象。http://opengroup.org/onlinepubs/007908799/xsh/unistd.h.html特性测试宏定义为-1

或者在运行时查询系统配置http://www.opengroup.org/onlinepubs/007908775/xsh/sysconf.html

用户回答回答于

需要告诉互斥对象在被输入时是进程共享的:http://www.opengroup.org/onlinepubs/007908775/xsh/pthread_mutexattr_setpshared.html

特别要注意的是,“属性的默认值是PTHREAD。_加工过程_“私有”,意思是从不同的进程访问它是未定义的行为。

扫码关注云+社区