epoll能在windows下跑吗
答案:2 悬赏:40
解决时间 2021-03-07 19:33
- 提问者网友:騷女、無惡不作
- 2021-03-06 18:36
epoll能在windows下跑吗
最佳答案
- 二级知识专家网友:余生继续浪
- 2021-03-06 18:48
1、epoll处理并发事件,多线程处理并发业务。2、poll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。
全部回答
- 1楼网友:青灯壁纸妹
- 2021-03-06 19:01
可以用windows完成端口(等同于linux下的epoll模型)来实现你的需求,以下是简介:
win32重叠i/o(overlapped i/o)机制允许发起一个操作,然后在操作完成之后接受到信息。对于那种需要很长时间才能完成的操作来说,重叠io机制尤其有用,因为发起重叠操作的线程 在重叠请求发出后就可以自由的做别的事情了。在winnt和win2000上,提供的真正的可扩展的i/o模型就是使用完成端口(completion port)的重叠i/o.完成端口---是一种windows内核对象。完成端口用于异步方式的重叠i/0情况下,当然重叠i/o不一定非使用完成端口不 可,还有设备内核对象、事件对象、告警i/0等。但是完成端口内部提供了线程池的管理,可以避免反复创建线程的开销,同时可以根据cpu的个数灵活的决定 线程个数,而且可以让减少线程调度的次数从而提高性能其实类似于wsaasyncselect和select函数的机制更容易兼容unix,但是难以实现 我们想要的“扩展性”。而且windows的完成端口机制在操作系统内部已经作了优化,提供了更高的效率。所以,我们选择完成端口开始我们的服务器程序的 开发。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯