打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
epoll

 epoll模型提供了二种工作模式:

1) Edge Triggered (ET)

ET是高速工作方式,只支持no-block socket。当IO事件发生时内核通知事件后不再发送更多的通知,直到用户执行的操作导致那个socket(或文件描述符)事件的改变,也就是说如果用户不对socket(或文件描述符)进行IO操作,那么内核也不会再通知事件。

2) Level Triggered (LT)

LT是缺省的工作方式,同时支持blockno-block socket。内核通知事件一个文件描述符是否就绪了,然后可以对这个就绪的fd进行IO操作。如果用户不作任何读、写操作,内核还是会继续通知事件的。

    更详细的epoll定义或信息,参照相关网络信息或书籍即可。下面,我来描述一下,这个需求中的epoll模型的设计。

一、业务需求如下图,要求满足高并发、高性能、高可靠等属性。



 

二、流程设计:

1) 主进程



1) Net_recv_thfunc工作线程



 

Handle_NetRecv函数流程



 

2) Net_send_thfunc工作线程 

             



    Epoll模型使用中,注意以下几个点:

    1)避免多个线程操作同一个epoll对象,否则会出现惊群现象,即当一个可读EPOLLIN或EPOLLOUT事件到达时,所有线程都返回这个事件,但只有一个线程真正能拿到这个事件,其他的线程将返回EWOULDBLOCK

    2)操作epoll对象的线程和操作socket的线程是否分开,应视后续的处理效率而定。如果接受到socket数据的后续处理性能高,则可以在同一线程里来搞定;否则,需要创建另一类线程池,来参与socket数据的后续处理。

    3)毕竟,一个进程内的句柄数也有限。如果要适应更加海量的客户端连接,可采取在同一台设备(硬件资源足够的情况下)或多台设备上,部署多套“接入管理Server”。

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux 2.6内核中提高网络I/O性能的新方法
嗯,不错难得有人可以把IO底层原理及4种主要IO模型
Linux epoll
Apache与Nginx网络模型
负载均衡实现方案
聊聊 Linux 中的五种 IO 模型
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服