找回密码
 注册
关于网站域名变更的通知
查看: 275|回复: 1
打印 上一主题 下一主题

Linux ------- Linux epoll

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-31 13:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
Linux epoll事件触发4 a, t" M, w0 V. x. K* z
1 |) }  M3 z$ H5 N1 ^1 ^; p
% v0 Q/ J3 Y) z1 M! [
一、什么是epoll& b2 K( X# h( ^0 M) p- M( W& `3 d9 C
; H: @7 l/ M  ?' O5 Y6 j0 O, D2 a9 K
1 I# x' P# H8 o& v1 ^  a
    epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。
9 h0 c# m5 s3 V7 Y4 J3 n
/ ]& q$ t0 e! e' {! O5 X! W二、epoll的相关系统调用
3 v0 X" I/ V4 I7 N6 x! X3 }- a7 O! Y4 j' ~  k
- Q  K9 r3 }& V! }
    epoll只有epoll_create,epoll_ctl,epoll_wait 3个系统调用。 ( {9 o% G4 F4 l! p

" t% L: P% w) `, d2 d; ]

- P3 N6 E" e3 G1、int epoll_create(int size);
8 X! i4 j% @- |
' B4 P8 T, ?7 `+ h2 v) y
# X; k7 p) [" V: A$ N$ G7 Q
    创建一个epoll的句柄。自从linux2.6.8之后,size参数是被忽略的。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。
, d) v1 M7 Q& f2 W! h * f2 U' o- Y4 ~- g0 ]
2. int epoll_ctl(int epfd, int op,int fd, struct epoll_event *event);; I8 Q" s' K+ r/ n8 q+ C' J; i7 P

, e7 _) q* E) V# G+ F% ?+ T8 l

. X5 N8 k8 f8 w! ]    epoll的事件注册函数,它不同于select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。+ w; a; y! K2 q, u4 C  j, S# M

" I; A5 D8 j$ g

9 h+ {' N  T: o) Y: t0 m) S
游客,如果您要查看本帖隐藏内容请回复

. g$ c& C# U4 i* r( ]9 ^8 _( a4 \7 K) M0 |  ^3 G! w9 M8 R5 _
6 N9 w9 D- L, \: g- {- T; N

3 S! a( P  h1 ^& p$ W6 w6 ^) @: b: a! P5 p$ J) U
+ i& a/ w* p5 |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 23:20 , Processed in 0.171875 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表