事件了解一下 基本事件驱动如下
7.事件驱动模型
1>select库 先创建三个关注事件描述符(读/写/异常) 然后调用低层select()函数 等待事件发生
2>poll库 同select库机制一样 但不同的是只创建一个关注事件描述符 在结构上设置(读/写/异常)
3>epoll库 通知内核创建N个描述符列表 然后epoll库会等待内核通知事件发生 是高性能事件驱动之一
4>rtsig模型 实时信号 使用rtsig时 通过系统内核建立一个rtsig队列用于存放标记事件 等待工作进程处理 当队列信号溢出时(默认1024 可修改) nginx将停止使用rtsig 而是使用poll库处理未处理的事件 直到rtsig 队列全部清空 然后再次启动rtsig模型,以防止新的溢出发生
5>kqueue模型 与epoll没有本质区别 同时支持条件触发(满足条件)和边缘触发(状态变化)
6>/dev/poll模型 unix平台使用了虚拟/dev/poll设备 将要监视的文件描述符加入这个设备 然后通过ioctl()调用来获取事件通知 在solaris ph/ux IRIX Tru unix中建议使用此方式
7>eventport模型 用于支持solaris10 可以有效的防止内核崩溃等情况的发生