导致共享内存文件上的Linux轮询事件

两个Linux进程打开并mmap相同的/ dev / shm / shared memory文件并将其用作公用内存。 问题:一个进程“唤醒”另一个进程通知它应该在内存中查找的最简单和最好的方法是什么? 例如,一个进程是否可以为另一个进程的文件描述符产生一个poll()事件? 该解决scheme不需要可移植,但我希望它是简单的。

这就是为什么POSIX有条件变量。

在共享内存区域中定义共享的POSIX条件变量及其关联的互斥锁。

然后有一个线程等待条件变量,另一个线程则要求另一个线程在内存中查找条件变量事件。

网上有很多关于条件变量的资料。 这是一个很好的短的: https : //computing.llnl.gov/tutorials/pthreads/#ConditionVariables

你可以考虑使用一个信号量(POSIX命名信号量)来解决这个问题。

一个简单的例子,使用共享内存(在这个例子中是在系统V中,但你也可以在POSIX中使用它)和POSIX信号量在链接中, 2个进程如何在没有pipe()的情况下相互交谈?