多路转接模型epoll
创始人
2024-06-02 01:42:44

目录

一、 历史定位

二、 接口

1、创建

int epoll_create(int size);

2、操作:

int   epoll_ctl(int epfd, int  op,  struct  epoll_event  *event)

3、等待:

        int  epoll_wait (int epfd,  struct  epoll_event  *events, int  maxevents , int  timeout);

三、epoll的工作原理


一、 历史定位

迄今为止,linux平台性能最好的IO多路转接模型。没有之一。

二、 接口

1、创建

int epoll_create(int size);

size :  目前已经弃用了,但是为了向下兼容,需要给size传递大于0的数字

 epoll_create的意义是什么?

 

 返回值:epoll操作句柄

有了操作句柄就能操控创建出来的结构体        eventpoll

2、操作:

int   epoll_ctl(int epfd, int  op,  struct  epoll_event  *event)

参数:

epfd :   epoll操作句柄

op:     options,  通过不同的op,告诉epoll_ctl函数该完成什么事情

  • EPOLL_CTL_ADD
  • 添加一个文件描述符对应的事件结构到epoll当中
  • EPOLL_CTL_MOD
  • 修改一个文件描述符的事件结构
  • EPOLL_CTL_DEL
  • 从epoll当中删除一个文件描述符对应的事件结构

fd:   待处理(添加,修改,删除)的文件描述符,这个fd是告诉epoll_ctl函数的

event:   epoll当中的事件结构

文件描述符对应的事件结构event中events是我们要关心的事件,这里如果同时多个事件那么我们也用或的方式连接。

返回值:

        0正常。

        -1失败。

3、等待:

        int  epoll_wait (int epfd,  struct  epoll_event  *events, int  maxevents , int  timeout);

参数:

epfd :

        epoll的操作句柄

events :

        事件结构数组(集合),从epoll当中获取就绪的事件结构

maxevents :

        最多一次获取多少个事件结构

timeout :

  • >0 :带有超时事件
  • ==O:非阻塞
  • <0:阻塞

三、epoll的工作原理

四、 epoll简单服务端多路转接服务器

这里我们可以先封装一个对于服务端的tcp类,来为服务端提供tcp服务。

 然后我们来实现一个epoll的监控

我们来验证一下:

我们运行代码可以看到多个客户端连接服务端并向其发送消息服务端都可以接收到。

 

相关内容

热门资讯

2026年多只“大牛股”狂刷屏... 本报(chinatimes.net.cn)记者谢碧鹭 北京报道2026年开年以来,A股市场呈现出鲜明...
黄金价格屡创新高 交易所、银行... 转自:新华财经新华财经北京1月13日电(记者 王小璐)开年以来,国际金价继续走出上扬行情,1月12日...
三峡旅游:2025年四季度收到... 转自:证券时报人民财讯1月13日电,三峡旅游(002627)1月13日公告,公司及所属子公司自202...
伊朗国际长途电话服务恢复但不稳... 转自:证券时报人民财讯1月13日电,新华社驻德黑兰记者13日证实,伊朗境内国际长途电话服务当天恢复。...
甘肃省药品检验研究院最新公布:... 1月13日消息,国家药品监督管理局旗下甘肃省药品检验研究院披露的生物制品批签发产品公示情况显示,20...