3

検索しようとしている正確な用語がわからないため、Googleでこれに対する答えを見つけるのに苦労しています。

誰かが msn メッセンジャーのようなプログラムを作成した場合、接続を常に開いて while(true) ループをなくすことは可能ですか? もしそうなら、誰かがこれがどのように達成されるかの方向に私を向けることができますか?

4

7 に答える 7

4

boost::asioソケット処理にライブラリを使えば、データ受信時のコールバックを定義できると思います。

于 2011-07-30T16:48:34.893 に答える
1

ACEを使用したい。データが使用可能になったときに通知する Reactor パターンがあります。

リアクターパターン

于 2011-07-30T17:01:51.953 に答える
0

それは素晴らしい質問です。njが言ったように、非同期I/Oを使用したいとします。ポーリング戦略を使用しているプログラムが多すぎます。システムで1000スレッドを実行することは珍しいことではありません。それらすべてがポーリングしている場合、システムは遅くなります。可能な限り非同期I/Oを使用してください。

于 2011-07-30T19:05:08.183 に答える
0

udpプロトコル通信はどうですか?指定したポートで 1 つの接続を開いて receive メソッドを呼び出すだけで、クライアントごとに while ループで待機する必要はありません

于 2011-12-29T14:06:39.737 に答える
0

while ループ (またはある種のループ) をどこかのライブラリに埋め込んで隠すか、イベント コールバックで次の IO の待機を再開することしかできませんが、完全に回避することはできません。

于 2011-07-30T16:56:48.547 に答える