在Windows下处理多个客户端连接的最佳方法(不使用线程)
Best method to handle multiple client connections under Windows (without the usage of threads)?
我发现为每个客户端连接创建一个线程的成本很高,而且我可以创建的线程数量也有限制,因此连接数量也是有限制的。我还有什么其他选择?我已经读到可以使用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。
相关文章:
- 方法重写线程C++中的概念
- 使用基类中的派生方法运行线程,而无需使用模板
- 将线程中的数据存储到全局容器的最佳方法?
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 如何将带有参数的方法传递给线程以执行?
- C++ POCO - 如何在不使用 run() 方法的情况下启动线程池上的线程?
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- C++中的多线程:连接线程的正确方法
- 使用包含互斥锁的类的方法实例化 cpp11 线程
- 如何在JNI中从线程内部调用JAVA方法
- 如何从另一个线程调用颤振引擎方法
- 在另一个线程上发出 QObject 信号的正确方法?
- 在C++线程内实现多个计时器的最安全方法
- C++ std::线程调用方法,从对象原因到调用此类的析构函数
- 将指针传递到另一个线程的正确方法
- 在另一个 QThread 上运行成员方法时,无法将事件发送到其他线程拥有的对象
- 解决方法:QPixmap:在GUI线程之外使用pixmap是不安全的
- CPP:如何使用需要指针的方法创建线程
- 初始化线程的正确方法
- 从另一个线程更新QT小部件的一种详细方法