Socket编程之epoll的学习笔记

1.内核事件表
epoll是Linux特有的I/O复用函数,首先,epoll使用一组函数来完成任务,而不是单个函数.其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,epoll需要使用一个额外的文件描述符,来唯一标识内核的这个事件表.

#include<sys/epoll.h>
int epoll_create(int size)

size只是告诉内核,事件表需要多大.该函数返回的文件描述符将用作其他所有的epoll系统调用的第一个函数,指定要返回的文件描述符

#include <sys/epoll.h>
int epoll_ctl(int epfd,int op, int fd, struct epoll_event * event)

fd参数是要操作的文件描述符,op参数是指定操作类型,操作类型有下面几种:
EPOLL_CTL_ADD,往事件表中注册fd上的事件
EPOLL_CTL_MOD,修改fd上的注册事件
EPOLL_CTL_DEL,删除fd上的注册事件
event参数指定事件,它是epoll_event结构指针类型,epoll_event的定义如下

struct epoll_event
{
	_unit32_t events;//epoll事件
	epoll_data_t data;//用户数据
}

其中events成员描述事件类型.epoll支持的事件类型和poll基本相同.表示epoll事件类型的宏在poll对应的宏前加"E"
, data成员用于存储用户数据,epoll_data_t的定义如下:

typedef union epoll_data
{
	void * ptr;
	int fd;
	uint32_tu32;
	uint64_t u64;
}

epoll_data是一个联合体,其中4个成员中使用最多的fd,它指定事件所属的目标文件描述符,ptr成员可用来指定与fd相关的用户数据,epoll_data_t是一个联合题,不能同时使用ptr和fd成员,将文件描述符和用户数据关联起来,以实现快速的数据访问

2.epoll_wait函数

epoll系列系统调用的主要接口是epoll_wait函数,它在一端超时时间里等待一组文件描述符上的事情

#include<sys/epoll.h>
int epoll_wait(int epfd,struct epoll_event* events,int maxevents,int timeout)

该函数成功返回就绪的文件描述符的各数
timeout参数的含义与poll接口的timeout参数相同.maxevents参数指定最多监听多少个时间,它必须大于0。
epoll_wai

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值