0

IOCP サーバーの起動に関する記事は山ほどありますが、適切なシャットダウンに関する記事はありません =/

終了時にサーバーをシャットダウンする適切な方法は何ですか? より具体的には、既にPostQueuedCompletionStatus()を使用してワーカー スレッドに終了を指示していますが、保留中の IO をすべてキャンセルし、終了する前にすべてのソケットを閉じる必要もありませんか?

MSDN でCancelSynchronousIo()を見つけました。終了の完了通知を受け取ったときに、各ワーカー スレッドにこの関数を呼び出させることができるようです...これは適切な方法ですか?

これについて助けてくれてありがとう。

4

1 に答える 1

2

開いているすべての接続をループしてすべてのソケットをシャットダウンすると、保留中のすべての I/O が自動的に完了し、サーバーがシャットダウンします。保留中の書き込みデータを完了するために残留クローズで閉じるか、ソケットの残留をオフにして保留中の書き込みデータを破棄し、クリーンにシャットダウンするのではなく RST で接続をリセットすることができます。

ここにいくつかの IOCP サーバーの例があります。既にご覧になっているかもしれませんが、クリーン シャットダウンを実現する方法を示しています。

于 2010-09-08T06:47:05.827 に答える