为什么80%的码农都做不了架构师?>>>   

链接:

http://blog.csdn.net/elssann/archive/2004/10/25/150088.aspx

原文:

在VC版的网络编程区,基本上每天都可以看到大量关于IOCP(完成端口)的帖子和讨论,很多人比较反感IOCP,特别是一些一直在UNIX下写程序的人。就我个人的看法来说,IOCP是一个设计得很巧妙的东西,是目前WINDOWS下编写高效IO程序的唯一选择。至少目前为止,我在UNIX下或者LINUX下都没看到类似的模型,就模型的先进性来说,我认为IOCP可能是领先的,问题在于WINDOWS的线程性能不够好,加上本质上是一个基于GUI的操作系统,别的方面劣势抵消了IOCP带来的优势,比如WINDOWS下的线程切换速度就没LINUX下快,这是因为WINDOWS下定时的时间精度所确定的。
        IOCP从本质上来说,没什么复杂的,抛开异步IO(这个是系统本身的IO,至少我没法实现),我们可以自己设计一个类似这样的东西,而且非常之简单。用过IOCP的人都应该熟悉这两个函数:PostQueueCompletionStatus, GetQueueCompletionStatus。用第一个函数Post给IOCP的数据,可以用第二个函数Get出来,其实我们就可以用一个信号量加一个队列和一个临界区就可以实现,队列为空的时候,信号量为0,Get函数用WaitForSingleobject阻塞在信号量上,往队列里Post数据的时候,先将数据插入到队列尾,然后Release一个信号量,那边阻塞住的Get函数从WaitForSingleObject那里返回,返回后就从队列里取一个数据,就如此简单。
        在UNIX/LINUX下,也有这种东西,就是消息队列,System V和Posix都有消息队列,几乎和PostQueueCompletionStatus, GetQueueCompletionStatus一模一样,稍微有点不同的地方,就是UNIX/LINUX下的消息队列都带有一个优先级。对Posix消息队列来说,返回的总是优先级最高的消息,而对System V来说,是任意的。现在最新的LINUX下的异步IO(这里我要特别强调一下异步IO和非阻塞IO的区别,异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你;非阻塞IO就是你要通过某种方式不定时地向系统询问你是否可以开始做某个IO,当可以开始后,还是要自己来完成IO)据说性能很强,不过我没用过,昨天晚上我在考虑,是否可以用异步IO加上消息队列在LINUX下实现一个类似WINDOWS下的IOCP的东西,这样对于很多从WINDOWS下转过来的程序员就会上手很快。目前EPOLL根据我的这几天研究,发现EPOLL实质上就是POLL的演化,用非阻塞IO来实现的,总感觉不是很舒服,毕竟异步IO是系统来完成IO,肯定高效得多。

转载于:https://my.oschina.net/digerl/blog/10808

突然发现到今天已经很难找到对底层理解这么透彻的人相关推荐

  1. 女生到社会上会遇到比学校更优秀的男生,而男生很难找到比在学校更好的女生。是吗?

    有人说:女生到社会上会遇到比学校更优秀的男生,而男生很难找到比在学校更好的女生,我现在告诉你,这句话你们都理解错了.这句话的意思是:男生在校园都还不成熟,19到25岁的男孩一般都比同龄女孩显得放不开, ...

  2. matebook14支持触摸屏吗_用过华为MateBook 14 2020款,才发现这“屏”真的很优秀

    [PConline 导购]在选购轻薄本时,绝大多数人的关注点就是配置中的"四大天王":处理器.显卡.硬盘.内存.如果这些都还不错,而且价格公道,多数人都会选择"剁手&qu ...

  3. 在当下互联网行情下,2023年程序员的工作真的很难找

    前言 年后,听到有几位同事有离职的想法,有的已经在开始找工作了.,这个行业的工资就是靠跳槽来加速增长的,不过经过了这几个月的面试.复试的经历,几位前期提出离职的同事渐渐改变了想法,他们发现放开后的20 ...

  4. android找工作 2019,2019年真的很难找工作吗?

    都说2019年的日子不好过,难道真的很难找工作吗? 我有一个朋友,从2019年1月1日开始离职的,一直到现在都还没找到工作,一直在面试,但是就是找不到工作,奇怪的是,面试的企业也没有那么多.看来看去就 ...

  5. 【IT资讯】Linus Torvalds:我们都老了,但Linux维护真的很难找

    Linux 之父Linus Torvalds非常担忧没人继续维护内核:"真的很难找到维护者!" 在本周召开的Linux开源峰会与嵌入式大会上, VMware的首席开放源代码官Dir ...

  6. Linus Torvalds:我们都老了,但Linux维护者真的很难找

    Linux 之父Linus Torvalds非常担忧没人继续维护内核「真的很难找到维护者!」 在本周召开的Linux开源峰会与嵌入式大会上,  VMware的首席开放源代码官Dirk Hohndel和 ...

  7. 为什么前端工程师很难找?

    为什么前端工程师很难找? 1.前端是一个比较新的行业,不像C.Java之类的在学校就可以学到(当然能学到多少是另一回事),目前我还没听说哪个学校会专门为CSS.Javascript开一个课程.相比后端 ...

  8. 网恋奔现发现对方长得很好看是什么样的体验?

    网恋奔现后发现对方长的很漂亮或者很帅,心里一定是乐开了花,任何时候看脸决定是否满意都是人类的本性,不管男女都是如此,这样情况大概率两个人都能成为男女情侣朋友. 脸长的好看可以掩盖自己其它的一切缺点,也 ...

  9. 软件测试培训出来真的很难找到工作嘛?

    这个问题,我先说下结论:不是软件测试培训出来的很难找工作,而是软件测试培训出来没有实际能力的很难找工作. 1.学历现在很多培训机构为了招收学员,对于学历这块把控不严格,对于学历低于大专文凭以下的,特别 ...

最新文章

  1. Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
  3. CentOS7下查询硬件信息
  4. 文巾解题 182. 查找重复的电子邮箱
  5. Executor框架
  6. Js判断下拉框是否为空值
  7. C#两大知名Redis客户端连接哨兵集群的姿势
  8. 你会如何优化应用程序的性能?
  9. html求相关系数,相关系数,确定系数(R^2)计算公式与在线计算器_三贝计算网_23bei.com...
  10. 科普知识:深网和暗网
  11. Attack State Slight Movement(攻击状态)
  12. Android 利用V4L2 调用camera
  13. 比较正确的 iPhone7/7+ 的进入DFU的方法是这样的
  14. 联想ThinkServer RS260服务器静音降噪改造及CentOS拷机测试
  15. 北京/上海内推 | 小红书社区技术部招聘NLP/多模态算法工程师/实习生
  16. CC2530芯片介绍
  17. 《经济学是什么》精髓:如何用经济学家的眼光理解个人选择和市场经济?
  18. 关于餐厅选址,这10种店铺千万别选!
  19. 关于python的数字类型、以描述错误的是_关于Python的数字类型,以下选项中描述错误的是...
  20. unity与php的交互-图片上传下载

热门文章

  1. 商超小程序服务器配置,超市商超小程序在线开店的教程
  2. centos 程序 mysql数据库文件位置_Centos mysql数据库存放位置更换
  3. 耳挂式蓝牙耳机原理_耳挂式蓝牙耳机项目总结分析报告
  4. 信息系统安全等级保护基本要求_继电保护对电力系统安全运行至关重要,电网对它的基本要求有哪些...
  5. python开发精典课程_Andrew Ng经典机器学习课程的Python实现(第1部分)
  6. python进入上下文管理器_浅谈Python中with(上下文管理器)的用法
  7. margin background_div盒子的外部距离(margin)【202】。
  8. 一篇文章带你搞懂 SpringBoot与Swagger整合
  9. mysql:分组中某字段最大值的查询结果
  10. 关于基因差异化的那些事 edger Deseq2和limma的使用及一些总结