0

私は Poco フレームワークを初めて使用し、C++ は苦手ですが、学んでいます。Windows でサーバー クライアント ベースのアプリケーションを作成する必要があります。私が今抱えている問題は、クライアントにデータを毎分繰り返し送信する必要があることです。サーバーとのアクティブな tcp 接続を持つクライアントに対してこれを行う必要があります。イベント、またはスレッドでトリガーされ、アクティブなすべてのスレッドを開始してクライアントにデータを送信する何かを作成する方法がわかりません。私の最初のアイデアは、TCPServerDispatcher クラスを書き直すか拡張する必要があるということです。また、ThreadPool からアクティブなスレッドを特定する方法がわかりません。

アイデア、提案、チュートリアルなどはありますか? 私はそれを行う方法を理解することはできません...

誰かが私にアイデアやコード例を教えてくれることを願っています。ありがとうございました。

4

1 に答える 1

0

これらのサーバー <> クライアント スレッドは、自分自身のデータを取得できませんか? 各スレッドの read() に 60 秒のタイムアウトを追加して、データを送信するのはかなり簡単です。これにはデータベース接続が多すぎるのではないでしょうか?

それができない場合、最新のデータをロック可能なオブジェクトに入れて、タイムアウト時に最新のデータをロック、書き込み、ロック解除するだけでスレッドを実行できますか? このようなソリューションには、ロックを保持している間にサーバースレッドがブロックされる原因となる、行儀の悪いクライアントを防ぐために、実際には書き込みタイムアウトも必要です。大きすぎなければ、server<> クライアント スレッドがデータのコピーを作成して送信できると思いますが、私はコピーがあまり好きではありません。

新しいデータが利用可能であることを server<> クライアント スレッドに通知する、より複雑な方法があります。新しいデータが利用可能であることを各スレッドに通知し、それに対して「すぐに」動作させることは十分に可能です。これは通常、server<> クライアント スレッドが複数のシグナルを待機していることを意味します。一般に、待ち時間が短いほど、ソリューションはより複雑になります:(

Rgds、マーティン

于 2012-07-05T10:00:23.317 に答える