13

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

4

2 に答える 2

4

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

共有メモリ領域で共有POSIX条件変数とそれに関連するミューテックスを定義します。

次に、一方のスレッドに条件変数を待機させ、もう一方のスレッドにもう一方のスレッドにメモリ内を調べさせたいときに、条件変数イベントを通知します。

Webには、条件変数に関する多くの資料があります。これはかなり良い短いものです:https ://computing.llnl.gov/tutorials/pthreads/#ConditionVariables

于 2012-07-13T15:12:12.017 に答える
2

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

共有メモリを使用する簡単な例 (この例では System V にありますが、POSIX でも使用できます) と POSIX セマフォはリンクにあり ます。

于 2012-07-14T02:58:24.630 に答える