打开两个Linux进程并映射相同的/ dev / shm / shared内存文件,并将其用作公共内存。问题:一个过程最简单,最好的方法是什么?醒来"另一个通知它应该查看内存的进程? 例如,一个进程是否可以为另一个进程的文件描述符导致poll()事件? 该解决方案不需要是便携式的,但我希望它很简单。
答案 0 :(得分:4)
这就是为什么POSIX有条件变量。
在共享内存区域中定义共享POSIX条件变量及其关联的互斥锁。
然后让一个线程等待条件变量,另一个线程在需要另一个线程查看内存时发出条件变量事件。
网络上有很多关于条件变量的材料。 这是一个非常好的短篇文章:https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables
答案 1 :(得分:2)
您也可以考虑使用信号量(POSIX命名信号量)来解决这个问题。
一个简单的例子,使用共享内存(在示例中它在System V中,但您也可以将它与POSIX一起使用)和POSIX信号量在链接中, How can 2 processes talk to each other without pipe()?