,直到数据为空为止
在linux内核中实现的核心代码如下:
// 默认为水平触发对应标志为EPOLLONESHOT, 边缘触发标志为EPOLLET
list_for_each_entry_safe(epi...执行io_ctl的DP_POLL阻塞自身以等待就绪事件的发生
kqueue技术
FreeBSD4.1引入kqueue技术,允许进程向内核注册描述所关注的kqueue事件的事件过滤器(event filter...epoll的实现原理类似,只不过相比epoll实现,增加更多事件的监听(异步IO/文件修改通知/进程跟踪/信号处理等)
但是和/dev/poll一样存在的兼容性问题,目前是在FreeBSD系统中
对应不同的事件以及事件的过滤器...高级轮询技术与epoll对比
kqueue技术在应用FreeBSD系统中,而/dev/poll技术是应用在Solaris操作系统上,故而存在移植的兼容性问题
两者与epoll技术设计上原理类似,采用分散与中间层的方式来解决...之后的版本,使用Linux的本地Posix线程库NPTL技术实现分配线程,对于Linux而言,1:1线程是指将所有线程库存放在内核中,而对于M:N而言,是将部分线程移入到用户空间使用
存在的技术问题
每个操作系统都存在文件描述符个数的限制