我可以找到大量关于启动 IOCP 服务器的文章,但没有关于正确关闭它的文章 =/
完成后关闭服务器的正确方法是什么?更具体地说,我已经使用PostQueuedCompletionStatus()来告诉工作线程退出,但是我是否还需要取消所有挂起的 IO,并在退出之前关闭所有套接字?
我在 MSDN 上找到了CancelSynchronousIo(),似乎我可以让每个工作线程在收到退出完成通知时调用此函数……这是正确的方法吗?
感谢您对此的任何帮助。
如果您遍历所有打开的连接并关闭所有套接字,那么所有挂起的 I/O 将自行完成,服务器将关闭。您可以使用延迟关闭来关闭以允许任何待处理的写入数据完成,或者您可以关闭套接字上的延迟并导致待处理的写入数据被丢弃并使用 RST 重置连接而不是干净地关闭。
我在这里有一些 IOCP 服务器示例,您可能已经看过,但它们展示了如何实现完全关闭。