程序笔记   发布时间:2022-06-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【C# 线程】线程池 epoll和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简直是太完美了,可以称得上是最高性能的服务器网络模型了。

大佬总结

以上是大佬教程为你收集整理的【C# 线程】线程池 epoll和IOCP之比较全部内容,希望文章能够帮你解决【C# 线程】线程池 epoll和IOCP之比较所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:linuxphp