私は別のスレッド(IOスレッド)からの情報を必要とするGUIスレッドを持っています。 IOスレッドはすべてシリアルポートから情報を取得しています。 Guiスレッドはすべて、フェッチ情報を読み込んでテーブルに表示しています。C++でスレッドを共有するスレッド
多分、IOスレッドはmutexによって保護されているグローバルな構造体にデータを入れ、GUIスレッドはその構造体から読み込むべきです。より良い実装がありますか? この場合、ミューテックスよりもクリティカルセクションの方が優れていますか?
私は、なぜIOスレッドもGUIスレッドだけを使っていないのですが、マルチスレッドを必要としないという返事が出てくることは知っています。はい、私はベストプラクティスを学ぶための簡単な例を挙げようとしています。
ありがとう!
こんにちは、それぞれの1つはグローバルなものを共有する構造体を持っていますが、いずれにしてもミューテックスを使用すると言いますか? 重要なセクションについては、ミューテックスは常にミューテックスであると考えていたので、実際にはミューテックスのようなOSからクリティカルセクションと呼ばれるものがあると思ったので、アプリケーション全体を共有します – Kam
ああ、私はその構造体に書き込むことはしませんので、mutexは必要ありません。 – Kam
まあ、(GUIスレッド構造体にローカルなIOスレッドからの)コピーを作成するときにはまだミューテックスが必要ですが、GUIスレッドがmutexを必要としないので、常に一貫した状態になります。 通知後10秒が経過しても、構造体の更新が安全でない可能性がある場合でも、GUIの読み取りの可否を決めることはできません。そのため、ミューテックスを入れてみてください。しかし、その小さな時間のほかに、GUIスレッドが読むための公正なゲームです。 –