直入正题

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就比iocp效率高了?不一定。

同样是以打印为例

假定现在有两个打印店,分别命名为:

epoll打印店(L店), IOCP打印店(W店)

你把相同的材料两份,分别放在两个店,哪一个会先完成呢?

如果L店的工作人员,工作效率非常高,很快就轮到你打印了。

而W店的工作人员,慢慢悠悠,边工作边吃饭边聊天,很久才轮到你的打印。

请问:那个会先打印完?

所以,谁更快,还与打印店的工作方式有很大关系。

回到本话题,决定效率快慢的,模型是一方面,操作系统的底层协议处理架构,也是一方面。

两者同样重要。

当然你也可以说,也很有可能是,L店的打印机是时速30张/分钟,W店打印机时速120张/分钟,这个就属于硬件配置了。

这就等于是i9处理器与二十年前的赛扬II处理器在比较了。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux27618 人正在系统学习中

[转帖]技术派-epoll和IOCP之比较的更多相关文章

  1. [转帖]Epoll和IOCP的比较

    Epoll和IOCP的比较 https://yq.aliyun.com/articles/53621/   kryptosx 2016-05-27 23:32:51 浏览6181   原来整理过一个& ...

  2. [转帖]EPOLL和IOCP比较

    EPOLL和IOCP比较 https://blog.csdn.net/educast/article/details/15503179 IOCP 异步非阻塞EPOLL 异步阻塞   EPOLL是半成品 ...

  3. 可扩展的事件复用技术:epoll和kqueue

    通常来说我喜欢Linux更甚于BSD系统,但是我真的想在Linux上拥有BSD的kqueue功能. 什么是事件复用技术 假设你有一个简单的web服务器,并且那里已经打开了两个socket连接.当服务器 ...

  4. [转帖]技术人眼中的Facebook Libra

    技术人眼中的Facebook Libra https://www.jianshu.com/p/ddc733077749 比特币 以太坊 EOS Libra 0.8352019.07.01 14:15: ...

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

    总结:IOCP :我的打印文件放在店里面排队,轮到我打印了,店长帮我打印一下,打印好了通知我来拿 Epoll  :我的打印文件放在店里面排队,轮到我叫我一下,我自己来打印. 直入正题:Epoll 是L ...

  6. [转帖]技术盛宴 | 关于PoE以太网供电技术详解

    技术盛宴 | 关于PoE以太网供电技术详解 https://smb.pconline.com.cn/1208/12085824.html   [PConline 干货铺]随着物联网技术飞速发展,需要提 ...

  7. [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解    http://www.52im.net/thread-1309-1-1.html   本文来自腾讯资深研发工程师罗成的技术分享, ...

  8. 技术派-不用sqrt手工计算平方根

    题目:任意长度数串,不使用sqrt函数,手工计算平方根?   要求只准用加/减/乘/除四则运算,不准使用power/sqrt等函数.   算法如下: 1.以小数点为中心往两边每2位分隔为一组: 2.然 ...

  9. 技术派-如果编译提示winnt.h(222):error C2146错误

    如果编译的时候,出现如下错误: \Microsoft Studio 8\VC\PlatformSDK\include\winnt.h(222):error C2146: 语法错误:缺少“:”(在标识符 ...

  10. 技术派-github常见的一些用法和缩写

    PR: Pull Request. 拉取请求,给其他项目提交代码 LGTM: Looks Good To Me.  看起来不错,代码已 review,可以合并 SGTM: Sounds Good To ...

随机推荐

  1. MySQL篇:bug1_navicat添加外键保存后不起作用(消失)

    问题 在Nacicat premium中添加外键一保存就消失 用SQL语句也显示创建成功,没有报错,可是在INSERT中又起不到约束作用 解决办法 参考一下资料发现可能是表的类型不支持外键 要在 My ...

  2. 聊聊GaussDB AP是如何执行SQL的

    本文分享自华为云社区<GaussDB AP是如何执行SQL的>,作者:yd_270088468. 前言 介绍GaussDB AP各组件是如何协调工作的,会着重介绍SQL引擎. 1.SQL引 ...

  3. 华为云张昆:支持全场景全业务,GaussDB加速企业数字化转型

    云.AI.5G等技术驱动,数据库行业迎来新的需求,云数据库也在不断演进升级.依托华为云与华为云Stack,通过全栈软硬件优化,华为云GaussDB进行了进阶与革新,以统一的架构,支持关系型与非关系型的 ...

  4. SyntaxError: Non-ASCII character #-*- coding:utf-8 -*-

    执行python报错 /usr/bin/python2.7 /root/demo.py File "/root/demo.py", line 2 SyntaxError: Non- ...

  5. 收钱吧与火山引擎VeDI合作一年后 有了哪些新变化?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群     收钱吧正在和火山引擎数智平台(VeDI)跑出一条业务提效新通路.   相关数据显示,收钱吧的日服务人次就近 ...

  6. Intellij idea getter setter 模板设置

    通过getter setter 模板设置 在实体类中 自动添加 @XmlTransient  按 [Alt+Insert],弹出的提示中选择 Getter and Setter Xml Entity ...

  7. Djagno 使用locals()

    Django使用locals()函数 locals()函数会以字典类型返回当前位置的全部局部变量 在 views.py中添加 #展示 class Goods_list(View): def get(s ...

  8. termius macos 破解版,激活版下载,永久激活,亲测可用

    termius 是一款非常值得推荐的 SSH/SFTP 跨平台终端工具,其十分亮眼的功能是可以上传文件夹,这是其他几款终端工具都不具备的,比如说 macOS 自带的终端.号称 21 世纪最强终端的 w ...

  9. 解决Github中使用Octotree时,出现 Error: API limit exceeded 报错 或者 Error: Connection error报错的问题(详细操作)

    对于科研工作者来说,Github 是不可多得的利器,那么Octotree 插件的使用将会让用户在使用 Github 时拥有更好的体验,提高学习工作的效率.但是笔者在使用的过程中遇到以下这样的问题,下面 ...

  10. Codeforces Round #645 (Div. 2)

    这一次的Div.2 大多数学思维.. A. Park Lightingtime https://codeforces.com/contest/1358/problem/A 题意:给一个n,m为边的矩形 ...