我有两个进程将运行,一个将从共享内存(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. 1字节共享内存需要互斥锁
- 2. Android中的进程共享互斥锁和条件变量
- 3. C++ - 使用多进程共享内存
- 4. 锁定互斥锁vs访问磁盘
- 5. 互斥多进程
- 6. C# - 锁定互斥锁问题
- 7. C++是互斥体锁定共享资源的唯一方式
- 8. 使用互斥锁从多个线程并发访问向量
- 9. OpenCL-共享内存访问
- 10. 当一个用户崩溃时共享内存中的互斥锁?
- 11. 共享内存并发算法与互斥锁/信号量之间的关系
- 12. 由多个子进程锁定互斥锁
- 13. 跨进程使用互斥锁
- 14. C内存共享问题
- 15. 与CUDA共享内存互斥 - 增加项目
- 16. std ::共享内存中的互斥量不工作
- 17. iPhone上的“互斥”和NSCondition的共享内存
- 18. 锁定可共享内存
- 19. 进程共享内存不共享(c,linux)
- 20. C - 互斥锁属性
- 21. 互斥锁和锁
- 22. 使用许多互斥锁
- 23. 将多进程池内循环(进程间共享内存)
- 24. 父进程无法访问PyQt中的共享内存
- 25. 无法访问在子进程中创建的共享内存
- 26. 父进程和子进程共享一个IPC共享内存
- 27. C#与多线程共享锁
- 28. 高效的多线程共享访问内存缓冲区
- 29. 如何创建可被多个进程访问的共享内存段
- 30. pthread互斥体在共享内存中是否可以跨线程工作?
参见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