1

QTフレームワーク(c ++)に、処理された(ローカル)データを他のサーバーにディスパッチし、他のサーバーで処理された同じ(外部)データを受信して​​比較するソフトウェアがあります。

大量のローカル データが処理されると、外部データがバッファリングされ、すべてのローカル データが送信されるまで比較プロセスに移行しない場合に問題が発生します。特定の時間枠でデータを比較する必要があるため、タイムアウトが発生します。

1 つのスレッドを使用してローカル データをディスパッチし、別のスレッドを使用して外部データを受信して​​比較するというアイデアがありました。QTcpServer は、同時読み取りと書き込みから保護するためにおそらくミューテックスが必要になります。

これは 1 つの接続で実行できますか? それとも、QT 環境で発送用に 1 つ、受信用に 1 つの接続を使用する方がよいでしょうか?

Fortune サーバーの例 http://doc.qt.io/qt-5/qtnetwork-threadedfortuneserver-example.htmlを確認 しましたが、同じ接続での送受信に異なるスレッドを使用することが可能で論理的かどうかを知る必要があります。

PS。私はマルチスレッドに慣れていないので、いくつかの概念を誤解していたら申し訳ありません。

4

1 に答える 1

1

コードを見なければ、この質問に明確に答えることは困難です。ただし、これにより正しい軌道に乗ることができます...

データの送受信に異なるスレッドが必要になるとは思いません。QTcpSocket は非同期です。

データの処理に使用しているアーキテクチャを修正する必要があるようです。

外部データはバッファリングされ、すべてのローカル データが送信されるまで比較プロセスに入りません。

それはもっと問題であり、マルチスレッドが有益な領域のように思えます. そのため、サーバー間の通信を制御するのではなく、マルチスレッドを使用してデータを処理します。

マルチスレッドは初めてだとおっしゃっているように、まずこの記事を読み、その例をテンプレートとして使用することをお勧めします。

于 2016-05-05T12:32:58.970 に答える