C++ 使用libEvent的高性能服务器

C++ 使用libEvent的高性能服务器,c++,libevent,C++,Libevent,我正在设计一个高性能的服务器(不是HTTP服务器),并且正在考虑我的设计选项。服务器应该支持大量传入连接(以千为单位),并且可以在windows和linux上编译 在windows方面,我已经实现了一个IO完成端口服务器,到目前为止,它似乎可以处理压力。由于linux需求突然出现,我现在尝试寻找一个跨平台库,它为我提供了一种将accept/read事件与线程池一起使用的方法 到目前为止,libEvent似乎是正确的选择(这里有点像“示例代码:echo服务器”)。但引述: 如果将事件库设置为使用锁

我正在设计一个高性能的服务器(不是HTTP服务器),并且正在考虑我的设计选项。服务器应该支持大量传入连接(以千为单位),并且可以在windows和linux上编译

在windows方面,我已经实现了一个IO完成端口服务器,到目前为止,它似乎可以处理压力。由于linux需求突然出现,我现在尝试寻找一个跨平台库,它为我提供了一种将accept/read事件与线程池一起使用的方法

到目前为止,libEvent似乎是正确的选择(这里有点像“示例代码:echo服务器”)。但引述:

如果将事件库设置为使用锁定,则可以安全地访问它 在多个线程之间。它的循环只能在单个线程中运行, 然而。如果您想让多个线程轮询IO,则需要 为每个线程创建一个事件库

我的基本设计是让线程池对接受和读取事件做出反应。如果我理解正确的话,这句话说我不能那样做

有没有人有高性能的经验。基于libEvent的服务器?我应该换一个图书馆吗


这样一个服务器的示例代码是完美的

libevent
如果您想保持跨平台的状态,那么这是一个不错的选择

如果您希望高效,我建议您使用特定于平台的API,如IO完成端口(您可以在Windows上工作)和Linux:

请注意,libevent在Linux内部使用epoll

至于您的多线程设计问题,我希望您不是使用一个线程来处理每个传入的客户端连接。。。如果您这样做了,您将无法达到使用事件驱动模型的目的!您应该设计代码,使少数客户端连接由单个线程处理,并随着并发连接数的增加而增加线程数

我也不会对客户端在线程池中发送的数据执行任何繁重的计算工作,线程池正在执行IO接收数据。我将把网络密集型IO和CPU密集型计算任务分为两个独立的线程池