epoll能在windows下跑吗
答案:2 悬赏:10 手机版
解决时间 2021-12-16 12:57
- 提问者网友:记忆里的那片海
- 2021-12-16 02:21
epoll能在windows下跑吗
最佳答案
- 五星知识达人网友:约定
- 2021-12-16 03:47
可以用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的完成端口机制在操作系统内部已经作了优化,提供了更高的效率。所以,我们选择完成端口开始我们的服务器程序的 开发。
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的完成端口机制在操作系统内部已经作了优化,提供了更高的效率。所以,我们选择完成端口开始我们的服务器程序的 开发。
全部回答
- 1楼网友:偷到星星啦
- 2021-12-16 05:06
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的调用,提高应用程序效率。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯