在Windows下处理多个客户端连接的最佳方法(不使用线程)

Best method to handle multiple client connections under Windows (without the usage of threads)?

本文关键字:方法 线程 最佳 处理 Windows 连接 客户端      更新时间:2023-10-16

我发现为每个客户端连接创建一个线程的成本很高,而且我可以创建的线程数量也有限制,因此连接数量也是有限制的。我还有什么其他选择?我已经读到可以使用select(),但我需要做一些调整以允许大量连接。

请注意,我不想使用外部库。

查看asio库-可独立使用或作为boost 的一部分使用

下面是示例页面的链接,您将看到一个单线程http服务器。非常简单,非常轻量级,不需要链接到其他库。

http://think-async.com/Asio/asio-1.11.0/doc/asio/examples/cpp11_examples.html#asio.examples.cpp11_examples.http_server

使用I/O完成端口这些端口允许您使用少量线程扩展到成千上万的连接。

如果跨平台不是您的目标,那么最好直接写入Windows IOCP API,而不是使用任何跨平台库。

请注意,我有一些文章和一些代码可以在这里下载,它们解释了如何使用IOCP。