我有两个进程将运行,一个将从共享内存(mmap)读取,另一个将写入该共享内存(mmap)。这些进程分别在两个不同的终端中启动,但它们需要同步,以便在一个进程正在写入时,它会在另一个进程从内存中读取之前写入全部数量。我所看到的与共享内存互斥锁有关的所有帖子都从一个主程序中产生线程/进程。有什么办法可以创建一个共享的互斥锁,可以被两个独立的程序使用吗?C多进程访问共享内存互斥锁
0
A
回答
0
对不起,但你运气不好。 Pthreads库没有'命名'互斥体的概念,所以两个独立的进程不能可靠地共享一个。
是的,您可以在共享内存中创建互斥锁,并且可以在其他进程中使用此互斥锁,但是您无法确保互斥体在第二个进程中通过第一个进程完全初始化。对于trully独立程序,我强烈建议使用信号量。
0
您可以在mmap
ped文件中创建共享互斥锁。如果您使用的是Linux并且拥有足够新的内核,您甚至可以创建一个未链接的临时文件mmap
它;初始化互斥量,然后只有link it to the final location。或者,您可以使用文件锁定来拒绝对它的访问,直到初始化完成。
pthread_mutexattr_init
POSIX manuals at linux.die.net的信号量示例在我的Linux 4.2.0-27 Ubuntu上确实有效。
相关问题
- 1. pthread进程共享互斥死锁
- 2. 共享互斥锁的交替例程
- 3. 在C++ 98互斥锁中锁定变量共享数据互斥锁
- 4. C++多线程互斥锁问题
- 5. 1字节共享内存需要互斥锁
- 6. Android中的进程共享互斥锁和条件变量
- 7. C++ - 使用多进程共享内存
- 8. 多线程互斥锁可以使用多个互斥锁
- 9. 锁定互斥锁vs访问磁盘
- 10. boost进程间共享互斥和boost进程间条件变量共享互斥
- 11. 多线程和互斥锁
- 12. 互斥多进程
- 13. C++ - 进程之间共享的互斥体
- 14. C# - 锁定互斥锁问题
- 15. C++是互斥体锁定共享资源的唯一方式
- 16. 锁定多个互斥锁
- 17. 使用互斥锁从多个线程并发访问向量
- 18. 如何在C中使用互斥锁进行多线程?
- 19. C++私人互斥访问
- 20. OpenCL-共享内存访问
- 21. 当一个用户崩溃时共享内存中的互斥锁?
- 22. 共享内存并发算法与互斥锁/信号量之间的关系
- 23. Node.js线程共享内存访问
- 24. 跨线程共享内存访问
- 25. 多进程python与共享内存
- 26. 由多个子进程锁定互斥锁
- 27. 进程间通信:共享内存vs线程对象访问
- 28. 跨进程使用互斥锁
- 29. C内存共享问题
- 30. std ::共享内存中的互斥量不工作
参见http://stackoverflow.com/q/2389353。 –
可能需要提高你的搜索技能。在stackoverflow之内和之外有很多答案。例如:[是否可以在Linux/UNIX上的多处理情况下使用互斥锁?](http://stackoverflow.com/questions/9389730/is-it-possible-to-use-mutex-in-multiprocessing-case- on-linux-unix) – kaylum
@kaylum,因为它并不能真正解决OP的问题 - 第一个进程需要在第二个进程读取它之前在共享内存中创建互斥锁,并且无法确保创建互斥锁。 – SergeyA