直入正题

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. GaussDB技术解读系列之SQL Audit,面向应用开发的SQL审核工具

    本文分享自华为云社区<​​GaussDB技术解读系列之SQL Audit,面向应用开发的SQL审核工具>​​,作者:华为云数据库和应用迁移专家. 前言 我们先从一个SQL语句说起(以某传统 ...

  2. 如何使用 Node.js Stream API 减少服务器端内存消耗?

    摘要:让我们看一个示例,展示在内存消耗方面,采用流的编程思路带来的巨大优越性. 本文分享自华为云社区<使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子>,作者 ...

  3. 解读顶会CIKM'21 Historical Inertia论文

    摘要:本文(Historical Inertia: An Ignored but Powerful Baseline for Long Sequence Time-series Forecasting ...

  4. 协同文档:OT与CRDT实现协同编辑笔记

    讲协同编辑,先回顾下从BBS.邮件,到IM 信息的异步传播 信息的生产和消费异步发生. 典型的场景如论坛,博客,文档库,邮件.我在写这篇文档的时候,你们看不到.你们看的时候,我早已写完.异步场景下,信 ...

  5. WebKit三件套(3):WebKit之Port篇

    了解其有关Port方面的设计,从而了解究竟如何能移植WebKit到自己的应用中. WebKitPort方面的内容是可以很广的,例如可将不同的图形库.网络库与WebCore集成,提供不同的Port接口供 ...

  6. Solon 1.6.29 发布,轻量级应用开发框架

    关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web.Data.Jo ...

  7. NOKOV度量动作捕捉协助完成无人机室内定位研究

    随着工业发展.技术进步,无人机的使用在各行各业愈发普遍,开始出现无人机飞行送外卖.智能无人机自主巡检等多方面应用.在这一过程中,无人机飞行定位就成为了重中之重. 西北工业大学无人机特种技术国防科技重点 ...

  8. GitLab--简单使用

    1 创建项目组 项目组说明 Private 私有 只有所有者 组内成员或已分配的用户有查看权限(同GitHub收费版的私有仓库) Internal 内部 拥有GitLab账号的成员可以查看 无账号用户 ...

  9. 【QT 学习之路】事件

    事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...

  10. 拥抱开放,Serverless 时代的下一征程

    Serverless 作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势使得它在云原生时代备受推崇.Serverless 的使用场景也由事件驱动,数据处理等部分特定场景转 ...