2012-07-13 21 views
7

2つのLinuxプロセスを開き、同じ/ dev/shm/sharedメモリファイルをmmapして共通メモリとして使用します。質問:あるプロセスが他のプロセスを「起動して」メモリ内に表示する必要があることを通知する最も簡単で最良の方法は何ですか? たとえば、あるプロセスが他のプロセスのファイル記述子に対するpoll()イベントを引き起こすことはできますか? ソリューションは移植する必要はありませんが、私はそれを簡単にしたいと思います。共有メモリファイルのLinuxポーリングイベントを発生させます

答えて

2

そのため、POSIXには条件変数があります。

共有POSIX条件変数とそれに関連するmutexを共有メモリ領域に定義します。

次に、一方のスレッドが条件変数を待機し、他方のスレッドが条件変数イベントを通知すると、もう一方のスレッドがメモリ内を参照するようになります。

条件変数については、ウェブ上に多くの資料があります。ここ は1かなり良い短いものです:https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables

0

あなたはこれを解決するためにもセマフォ(セマフォという名前のPOSIX)の使用を検討してくださいことがあります。

一つの簡単な例として、共有メモリ(例では、それはSystem Vのであるが、あなたはあまりにもPOSIXでそれを使用することができます)とPOSIXセマフォを使用すると、リンクにある、 How can 2 processes talk to each other without pipe()?

関連する問題