送信される新しいメッセージと、ネットワーク上の新しいデータの受信の両方に応答できるクライアント ネットワーク スレッドが必要です。このスレッドがポーリング ループを実行するのを避けたいのですが、必要な場合にのみ処理したいと考えています。
シナリオは次のとおりです。
クライアント アプリケーションは、完全ではないが大部分が同期しているプロトコルを介してサーバーと通信する必要があります。通常、クライアントはサーバーにメッセージを送信し、応答が受信されるまでブロックします。
サーバーはクライアント要求を非同期的に処理する場合があります。この場合、クライアントへの応答は結果ではなく、処理が開始されたという通知です。結果メッセージは、サーバーがクライアント要求の処理を完了すると、将来のある時点でクライアントに送信されます。
非同期結果通知は、いつでもクライアントに到着できます。これらの通知は、受信時に処理する必要があります。つまり、クライアントが再度送信したときにのみバックログを処理することはできません。
クライアントのネットワーク スレッドは、サーバーからの通知を受信して処理し、クライアントからの発信メッセージを送信します。
これを実現するには、ネットワーク データが受信されたとき、または送信するメッセージが入力キューに入れられたときに、処理を実行するためにスレッドをウェイクさせる必要があります。
キューに入れられた作業項目またはソケットからのデータの処理を実行するために、スレッドをウェイクアップするにはどうすればよいですか?
私は主にプレーンな Win32 API を使用することに興味があります。
最小限の例または関連するチュートリアルは大歓迎です!