首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用libEvent的高性能服务器

使用libEvent的高性能服务器
EN

Stack Overflow用户
提问于 2013-03-20 15:25:48
回答 1查看 4.1K关注 0票数 4

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

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

到目前为止,libEvent似乎是正确的选择(类似于此链接中的“示例代码:回送服务器”)。但是引用libEvent文档中的另一页的话

如果event_base设置为使用锁定,则在多个线程之间访问它是安全的。但是,它的循环只能在一个线程中运行。如果您想让多个线程轮询IO,则需要为每个线程提供一个event_base。

我的基本设计是让线程池响应接受和读取事件。这句话,如果我理解得对的话,就说我做不到。

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

这样的服务器的示例代码将是完美的。

EN

回答 1

Stack Overflow用户

发布于 2013-03-20 16:29:48

如果你想保持跨平台的话,libevent是最好的选择。

如果您想提高效率,我将推荐平台特定的API,比如IO完成端口(您已经使用了Windows)和Linux中的epoll

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

至于您的多读设计问题,我希望您不要用一个线程来处理每个传入的客户端连接。如果你使用事件驱动的模型,你就会失败!您应该设计您的代码,以便由单个线程处理少量客户端连接,并随着并发连接数量的增加而增加线程数。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15527753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档