C 多个进程访问的共享内存上的互斥锁

标签 c synchronization mutex shared-memory multiple-processes

我有两个正在运行的进程,一个将从共享内存 (mmap) 中读取,另一个将写入该共享内存 (mmap)。这些进程在两个不同的终端中分别启动,但它们需要同步,以便在一个进程写入时,它在另一个进程从内存读取之前写入全​​部数据。我看到的所有与共享内存互斥锁相关的帖子都是从单个主程序生成线程/进程。有没有办法创建一个可以由两个单独的程序使用的共享互斥锁?

最佳答案

抱歉,你运气不好。 Pthreads 库没有“命名”互斥体的概念,因此两个独立的进程无法可靠地共享一个。

是的,您可以在共享内存中创建一个互斥体,然后从其他进程使用该互斥体,但是当您在第二个进程中检查该互斥体时,无法确保第一个进程完全初始化该互斥体。对于真正独立的程序,我强烈建议使用信号量。

关于C 多个进程访问的共享内存上的互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996972/

相关文章:

c - 如何修复我的 pthread 代码遇到的此错误?

C编程: wrong output?

c - 在 DB2 上构建 UDF

被 Unresolved external symbol error 弄糊涂

java - Eclipse: 'Revert' 和 'Override and Update' 之间的区别

c++ - 如何在没有内存泄漏的情况下同时(线程安全)填充 c++11 std::map<std::string,std::bitset<N>*>?

C++ sleep pthread 冲突

c - 如何在没有公共(public)头文件的情况下共享数组类型定义?

java - 用于管理 api 每分钟最大请求数的数据结构

C# 精确显示标签 X 秒并隐藏它 Y 秒