FIFOに書き込む複数のプロセスを記述する必要があります。それらの間でどのように同期するのかと思っています。ロックが必要ですか?他の人がロックを解放するのを待つ? プロセス間通信を実現する他の最良の方法を教えてください。複数のプロセス読み取り/書き込みfifo
0
A
答えて
2
"do I need to write some lock"
まあ、おそらくはい。共有メモリ(pthreads、openmp)を使って作業している場合は、競合状態やデータの無効化などを防ぐために、ある種の読み書きロックが必要です。分散メモリを使用している場合は、 1つの場所ですべてのデータを取得するリダクション操作の種類。
"if yes then would that be slow as a process has to wait for the other to free the lock?"
これはプログラマによって異なります。低速で非効率的なプログラムを書くのは簡単ですが、プログラムの実行速度やスピードなどを向上させる方法には時間がかかります。パフォーマンスのボトルネックがどこにあるかは、必ずしも実際に発生する場所ではないと思います。デバッガとパフォーマンスアナライザを使って、最高の友達になれることをお勧めします。
ここから始めるにはいくつかのリソースがあります。私は研究を行い、コードを書いて、より良い助けを得るために特定の質問をすることをお勧めします。
https://computing.llnl.gov/tutorials/pthreads/
https://computing.llnl.gov/tutorials/openMP/
https://computing.llnl.gov/tutorials/mpi/
また、いくつかの他の偉大なリソースのための右に「関連の質問をチェックしてください。
関連する問題
- 1. fifo上のデータの書き込み/読み取りの正しい方法
- 2. 読み取り/書き込みのQObject
- 3. プリファレンスの読み取り/書き込み
- 4. 読み取り/書き込み同期
- 5. MMIO読み取り/書き込みレイテンシ
- 6. PHP非同期複数ファイルの書き込みと読み取り
- 7. C#CSLAビジネスオブジェクトのジレンマ:読み取り専用vs読み込み/書き込み
- 8. 複数のスレッドで書き込みファイルを読み込む
- 9. メモリキー値ストアで複数回読み込みを書き込む
- 10. C#ファイルを読み取り専用で読み取り/書き込みする
- 11. 名前付きFIFOパイプはディスクの書き込みと読み取りを使用しますか?
- 12. FIFO上のブロッキング読み取りと書き込みを同期できません
- 13. オブジェクトの書き込み/読み込み
- 14. フォルダのAndroidの読み取り/書き込みの許可
- 15. mongodbの読み取りと書き込みの接続のタイムアウト
- 16. ファイル読み込みと書き込み
- 17. オーディオ/ビデオファイルのメタデータの読み取り/書き込み
- 18. .NETの64ビットシステムでのアトミック読み取り/書き込みサイズ?
- 19. DBからの読み取りとファイルへの書き込み
- 20. ubuntuサーバーの通常のディスク読み取り/書き込み値
- 21. APEXでの読み取り/書き込みページの作成
- 22. アセンブリでのハードウェアへの書き込み/読み取り方法
- 23. バイナリファイルの読み取り/書き込みのオーバーフロー
- 24. Javaのオープンソースの書き込み/読み取りライブラリ
- 25. リソースファイルからのオブジェクトの書き込みと読み取りIOS
- 26. ファイルへの読み書きの高速読み込みと書き込み
- 27. 読み取り書き込みモードのpython
- 28. Wixネットワークサービスの読み取りと書き込み
- 29. GPU; OpenGL ES 2.0;データの読み取り/書き込み。 NDK; Tegra2;
- 30. MPRIS + Python(dbus):読み取りと書き込みのプロパティ
シナリオをより詳細に記述する必要があります。 1つの特定の問題は、「各メッセージがどれくらい大きいか」です。 FIFOバッファのサイズより小さく( 'write()'を1回呼び出すだけで書かれている場合)、FIFOを使用するプロセスの数にかかわらず、各メッセージはアトミックになります。また、書き込みプロセスがすべてFIFOを開き、完了するまで開いたままにするか、各メッセージに対して開閉するかについて少し説明する必要があります。データは「サーバー」にのみ送られますか、またはサーバーは返信しますか?サーバーが返信する場合、どのように返信しますか? –
ソケットを使う方が良いかもしれません。各ソケットはクライアントとサーバー間の双方向接続になります。私はあなたが中央サーバプロセスを持っていると仮定していますが、いくつかのプログラムのコレクションはすべて無作為にインターワーキングされているわけではありませんが、余分な記述でも 'プロセスジオメトリ'について説明する必要があります。 –
FIFOバッファのサイズをどのように知ることができますか?メッセージは最大で500kです。このサイズは設定可能です。私が心に留めていることは、複数のプロセスがそれに書き込むFIFOを持つことです。そして、1つのプロセスはそこから読み取り、その内容をネットワークに送信します。 –