我有两个正在运行的进程,一个将从共享内存 (mmap) 中读取,另一个将写入该共享内存 (mmap)。这些进程在两个不同的终端中分别启动,但它们需要同步,以便在一个进程写入时,它在另一个进程从内存读取之前写入全部数据。我看到的所有与共享内存互斥锁相关的帖子都是从单个主程序生成线程/进程。有没有办法创建一个可以由两个单独的程序使用的共享互斥锁?
最佳答案
抱歉,你运气不好。 Pthreads 库没有“命名”互斥体的概念,因此两个独立的进程无法可靠地共享一个。
是的,您可以在共享内存中创建一个互斥体,然后从其他进程使用该互斥体,但是当您在第二个进程中检查该互斥体时,无法确保第一个进程完全初始化该互斥体。对于真正独立的程序,我强烈建议使用信号量。
关于C 多个进程访问的共享内存上的互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996972/