winsock を使用して tcp 通信を実装するアプリケーションがあるとします。ソケットごとにスレッドを作成し、その上でブロック受信します。データが到着したら、他のスレッド (リッスン スレッド) に通知したいと考えています。
これを実装する最良の方法は何だろうと思っていました:
この設計から離れてノンブロッキング ソケットを使用すると、リッスン スレッドは絶えず反復してノンブロッキング受信を呼び出す必要があるため、スレッド セーフになります (ソケット用の余分なスレッドはありません)。
非同期プロシージャ コールを使用してリスニング スレッドに通知します。この場合も、apc がキューに入るのをアラート待機する必要があります。
各ソケットスレッドがメッセージを投稿するスレッドセーフなメッセージキューを実装し、リスナーは間隔ごとにそれを調べてそこからデータを取得します。
また、WSAAsyncSelect について読みましたが、これがメッセージをウィンドウに送信するために使用されていることがわかりました。他のスレッドに似たようなものはありませんか?(まあ、apcsは...だと思います)
ありがとう!