ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C# 线程】线程池 epoll和IOCP之比较

2022-01-10 02:32:07  阅读:199  来源: 互联网

标签:排队 Epoll C# IOCP 打印 线程 轮到 文档


总结:IOCP :我的打印文件放在店里面排队,轮到我打印了,店长帮我打印一下,打印好了通知我来拿

          Epoll  :我的打印文件放在店里面排队,轮到我叫我一下,我自己来打印。

直入正题:
Epoll 是Linux系统下的模型;IOCP 是Windows下模型;
Epoll 是当事件资源满足时发出可处理通知消息;
IOCP 则是当事件完成时发出完成通知消息;
从应用程序的角度来看, Epoll 是同步非阻塞的;IOCP是异步操作;

举例说明,更加清晰透彻:

有一个打印店,有一台打印机,好几个人在排队打印。
普通打印店,正常情况是:

1、你准备好你的文档,来到打印店;
2、排队,等别人打印完;
3、轮到你了,打印你的文档;
4、你取走文档,做后面的处理。

这种方式,你会浪费很多等待时间,非常低效。
于是, Linux和windows都提出了自己最优的模型。

Linux的epoll模型,则可以描述如下:
1、你准备好你的文档,来到打印店;
2、告诉店小二说,我先排队在这位置,轮到我了通知一声(假定你来回路上不耗时);
3、你先去忙你的事情去了;
4、轮到你了,店小二通知你(假定你来回路上不耗时);
5、你获得打印机使用权了,开始打印;
6、打印完了拿走。

你会发现,你节省了排队的时间,等到你能获得打印机资源的时候,告诉你来处理。但是这里,就浪费了一点时间,就是你自己打印。这就是epoll的同步非阻塞。

windows的IOCP模型,则可以描述如下:
1、你准备好你的文档,来到打印店;
2、告诉店小二说,我先排队,轮到我了帮打印下,好了通知我(也假定你来回路上不耗时);
3、你先去忙你的事情去了;
4、轮到你的文档了,店小二直接帮你打印好了,通知你;
5、你来了,直接取走文档。

你会发现,你不但节省了排队时间,你连打印时间都节省了, 完全异步操作。

很显然,IOCP简直是太完美了,可以称得上是最高性能的服务器网络模型了。

标签:排队,Epoll,C#,IOCP,打印,线程,轮到,文档
来源: https://www.cnblogs.com/cdaniu/p/15782939.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有