検索しようとしている正確な用語がわからないため、Googleでこれに対する答えを見つけるのに苦労しています。
誰かが msn メッセンジャーのようなプログラムを作成した場合、接続を常に開いて while(true) ループをなくすことは可能ですか? もしそうなら、誰かがこれがどのように達成されるかの方向に私を向けることができますか?
検索しようとしている正確な用語がわからないため、Googleでこれに対する答えを見つけるのに苦労しています。
誰かが msn メッセンジャーのようなプログラムを作成した場合、接続を常に開いて while(true) ループをなくすことは可能ですか? もしそうなら、誰かがこれがどのように達成されるかの方向に私を向けることができますか?
boost::asioソケット処理にライブラリを使えば、データ受信時のコールバックを定義できると思います。
それは素晴らしい質問です。njが言ったように、非同期I/Oを使用したいとします。ポーリング戦略を使用しているプログラムが多すぎます。システムで1000スレッドを実行することは珍しいことではありません。それらすべてがポーリングしている場合、システムは遅くなります。可能な限り非同期I/Oを使用してください。
udpプロトコル通信はどうですか?指定したポートで 1 つの接続を開いて receive メソッドを呼び出すだけで、クライアントごとに while ループで待機する必要はありません
while ループ (またはある種のループ) をどこかのライブラリに埋め込んで隠すか、イベント コールバックで次の IO の待機を再開することしかできませんが、完全に回避することはできません。