2つのLinuxプロセスを開き、同じ/ dev/shm/sharedメモリファイルをmmapして共通メモリとして使用します。質問:あるプロセスが他のプロセスを「起動して」メモリ内に表示する必要があることを通知する最も簡単で最良の方法は何ですか? たとえば、あるプロセスが他のプロセスのファイル記述子に対するpoll()イベントを引き起こすことはできますか? ソリューションは移植する必要はありませんが、私はそれを簡単にしたいと思います。共有メモリファイルのLinuxポーリングイベントを発生させます
7
A
答えて
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()?
関連する問題
- 1. PHPの共有メモリファイル
- 2. LINUXで共有ライブラリを作成するとエラーが発生します
- 3. Tridion RepositoryLocalObject.GetBluePrintChainメソッド(BluePrintChainFilter)が共有アイテムで例外を発生させます
- 4. Redhat Linuxの共有オブジェクト
- 5. Linuxの共有ライブラリをデバッグする
- 6. 共有ホストのsymfonyプロジェクトでエラーが発生しました
- 7. SSRSサブスクリプション:ファイル共有にエラーが発生しました
- 8. Linuxでsignal.hを使用してコンパイルエラーを発生させる
- 9. フラッシュ共有オブジェクト(つまり、フラッシュクッキー)はChromeと共有されていません
- 10. Linux、Mono、共有ライブラリ、未解決のシンボル
- 11. 共有ライブラリとLinux(elf)のリンク
- 12. ビジネスインテリジェンス開発スタジオのソリューションエクスプローラで共有データセットがありません
- 13. shmctlでLinux共有メモリのサイズを変更できますか?
- 14. 長いポーリングでユーザー固有のイベントを発生させる
- 15. WindowsでUNC共有エラーが発生する
- 16. Backbone.js:モデル継承により共有データが発生する
- 17. 共有ホスティングサービスにRailsアプリケーションをデプロイするとエラーが発生します
- 18. 共有メモリ内のリンクされたリスト、Linuxカーネル
- 19. ServiceLoader.Next NoClassDefFoundErrorを発生させます
- 20. EasyhookはSystem.NotSupportedExceptionを発生させます
- 21. Monodroidはエラーを発生させます
- 22. ヌルポインタ例外を発生させます。
- 23. AdWhirlはIllegalStateExceptionを発生させます
- 24. ObservableArray.push()がクリックイベントを発生させます
- 25. Linuxで実行可能なメモリページを共有しますか?
- 26. キリル文字でURLを共有する際にエラーが発生しました
- 27. sh:共有ライブラリの読み込み中にエラーが発生しました:libc.so.6:共有オブジェクトファイルを開くことができません:エラー24
- 28. 共有ライブラリの読み込み中にエラーが発生しました:libevent-1.4.so.2:共有オブジェクトファイルを開くことができません:
- 29. Androidは共有テキストファイルを受信しますが、テキストコンテンツは共有しません
- 30. ファイナライザはランダム例外を発生させ、ランダムエラーを発生させ、アプリケーションをハングアップさせます。