代码之家  ›  专栏  ›  技术社区  ›  CuriousGeorge

如何正确关闭IOCP服务器?

  •  0
  • CuriousGeorge  · 技术社区  · 16 年前

    我可以找到很多关于启动iocp服务器的文章,但是没有关于正确关闭它的文章。=/

    完成后,关闭服务器的正确方法是什么?更具体地说,我已经使用 PostQueuedCompletionStatus()。 告诉工作线程退出,但我不也需要取消所有挂起的IO,并在退出之前关闭所有套接字吗?

    我发现 取消同步IO() 在msdn上,似乎可以让每个工作线程在收到退出的完成通知时调用此函数…这是正确的方法吗?

    谢谢你在这方面的帮助。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Len Holgate    16 年前

    如果循环访问所有打开的连接并关闭所有套接字,那么所有挂起的I/O都将自行完成,服务器将关闭。您可以使用延迟关闭来关闭以允许任何挂起的写入数据完成,也可以关闭套接字上的延迟,并导致挂起的写入数据被丢弃,并且使用RST重置连接,而不是完全关闭。

    我有一些IOCP服务器示例 here ,您可能已经看到了,但它显示了如何实现干净的关机。