2016-05-05 12 views
1

処理された(ローカル)データを他のサーバーにディスパッチし、他のサーバーで処理された同じ(外部の)データを受信して​​比較するQTフレームワーク(C++) 。QTcpServerが別のスレッドで送受信しています

大量のローカルデータが処理され、外部データがバッファされ、すべてのローカルデータが送信されるまで比較処理に入り込まない場合に問題が発生します。特定の時間枠で比較するデータが必要なので、タイムアウトが発生します。

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

これは1つの接続で可能ですか、またはQT環境で受信するために1つの接続を持つ方がよいでしょうか?

私はフォーチュンサーバーの例 http://doc.qt.io/qt-5/qtnetwork-threadedfortuneserver-example.html をチェックするが、私はそれは同じ接続で送受信するための別のスレッドを使用することが可能と論理的かどうかを知る必要があります。

PS。私はマルチスレッドに慣れていないので、いくつかの概念を誤解した場合はお詫びします。

+0

'QTcpConnection'は_one_スレッドにしか存在できません。あなたは同じスレッドで送受信する必要があります。つまり、接続と同じスレッド内のデータを処理する必要はありません。これは実際には時間がかかる部分です。 –

答えて

1

コードを一切見ずに、この質問に明確に答えにくいです。しかし、これは適切なトラックにあなたを設定することがあります...

私はあなたがデータを送受信するために別のスレッドが必要になるとは思わないでしょう。 QTcpSocketは非同期です。

データを処理するために使用しているアーキテクチャのように思えますが、改訂が必要な場合があります。

外国人のデータがバッファリングされ、すべてのローカルデータが問題とマルチスレッドが有益であろう地域のより多くのように聞こえる

に送信されるまで比較プロセスにはなりません。したがって、サーバー間の通信を制御するのではなく、データを処理するためにマルチスレッドを使用してください。

マルチスレッドに慣れていないと言えば、まずはthis articleを読み、その例をテンプレートとして使用することをおすすめします。

関連する問題