2

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

4

2 回答 2

1

mmap您可以在ped 文件中创建共享互斥锁。如果您使用的是 Linux 并且拥有足够新的内核,您甚至可以创建一个未链接的临时文件,mmap它;初始化互斥体,然后才将其链接到最终位置。或者您可以使用文件锁定来拒绝对它的访问,直到初始化完成。

pthread_mutexattr_initlinux.die.net 上 POSIX 手册中的信号量示例在我的 Linux 4.2.0-27 Ubuntu 上运行。

于 2016-03-14T20:29:22.707 回答
1

对不起,但你运气不好。Pthreads 库没有“命名”互斥锁的概念,因此两个独立的进程不能可靠地共享一个。

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

于 2016-03-14T20:18:31.197 回答