博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iocp/epoll/select
阅读量:4646 次
发布时间:2019-06-09

本文共 673 字,大约阅读时间需要 2 分钟。

1.iocp是在io操作完成之后,才通过get函数返回这个通知,epoll的工作原理是你想进行io操作时,先向epoll查询是否可读或者可写,如果处理可读或者可写状态后,epoll会通过epoll_wait的函数通知你

2.iocp,epoll二者都可以通过指针携带应用层数据,当事件通知到来时,系统不仅告诉你发生什么事件,同时还告诉你这次事件操作的数据

3. 阻塞模式    调用者必须阻塞等待操作的完成,如果资源不可用,只能阻塞等待

   同步非阻塞  当资源不可用时 ,调用将立即返回,并得到通知指示资源部可以用,否则立即完成
   异步非阻塞  调用者告诉系统需要做的操作,然后操作立即完成,系统会立即返回结果,否则告诉调用者在执行中,操作完成后通知调用者

4. iocp

   a. 是一个win32内核对象
   b. 负责维护工作线程池,同时负责io通道内存池
   c. 实现线程管理以及io请求通知 ,最小化做到线程上下文切换
   d. 实现线程优化调度,提高cpu和内存缓冲使用率

5. select需要遍历所有句柄才能获取哪些句柄有事件通知,同时只支持1024个,轮询式

   epoll对句柄事件选择是不遍历的,是事件响应,触发式

   一般linux系统是用一个长度为32的uint32数组来存放处理select,这是系统内核编译时定义好的,数组中每一个bit理解为一个socket,所以32*4*8 = 1024如果你要更改就需重编译内核

转载于:https://www.cnblogs.com/kangbry/archive/2012/10/10/2718701.html

你可能感兴趣的文章
经常用得到的安卓数据库基类
查看>>
简单入门dos程序
查看>>
vue element 关闭当前tab 跳转到上一路由
查看>>
4、面向对象
查看>>
[NOI2005]聪聪与可可(期望dp)
查看>>
POJ 3723
查看>>
Maven的安装
查看>>
angular初步认识一
查看>>
springmvc3.2+spring+hibernate4全注解方式整合(一)
查看>>
Elgg网站迁移指南
查看>>
素数筛法优化
查看>>
installshield 注册dll
查看>>
Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
查看>>
LTE QCI分类 QoS
查看>>
Get MAC address using POSIX APIs
查看>>
bzoj2120
查看>>
基于uFUN开发板的心率计(一)DMA方式获取传感器数据
查看>>
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>