博客
关于我
加入epoll_wait之后的简化版本
阅读量:595 次
发布时间:2019-03-12

本文共 618 字,大约阅读时间需要 2 分钟。

之前写过一些版本,但没有使用io复用,导致效率比较低。我选择了epoll轮询机制,发现它的设计非常巧妙。epoll_wait函数可以监wait事件源,当有并发事件发生时,它会返回一组事件。每个事件都有data.fd字段,用来区分是已经被监听的服务器socket描述符还是接受连接后的新描述符。如果是被监听的socket有事件发生,就需要进行accept操作,将新的描述符重新加入epoll事件列表。如果是针对epollin可读事件的描述符,则需要执行相应的io操作。这类io操作需要谨慎处理,建议优先使用recv和send等高效的接收函数,避免使用read和write等可能导致内核陷入的API。有关这一方面的信息,或可参考零复制的相关知识。

代码托管在了github上运行。与上一个版本相比,本次在后端仍然使用http协议处理客户端发出的数据流,并向客户端返回收到的字节数。之后又开发了一个客户端与服务器配对的版本,虽然主要目的是探索epoll的应用,但通过这次实践,我深刻认识到编程能力的提升并非仅靠练习 vệASYNCIO而能快速实现,而是需要在编程之前,就如作家在作画前构思整体构思那样,预先在脑海中形成全局思想。编程就像作画,需要从构思到具体操作都要有清晰的规划。在探索epoll机制的过程中,不仅加深了对epoll轮询的理解,更体会到了编程中的哲理。现在把代码托管到github上,方便维护和分享,也为以后的开发提供了参考。

转载地址:http://wlcxz.baihongyu.com/

你可能感兴趣的文章
Frame--Api框架
查看>>
Boostrap技能点整理之【网格系统】
查看>>
新闻发布项目——业务逻辑层(UserService)
查看>>
hibernate正向生成数据库表以及配置——hibernate.cfg.xml
查看>>
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
查看>>
java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
查看>>
使用ueditor实现多图片上传案例——前台数据层(Index.jsp)
查看>>
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
查看>>
解决Chrome播放视频闪屏黑屏无法播放
查看>>
Git简单理解与使用
查看>>
echarts 基本图表开发小结
查看>>
二分查找.基于有序数组的查找方法.704
查看>>
制作JS验证码(简易)
查看>>
sklearn :ImportError: cannot import name ‘Imputer‘
查看>>
adb通过USB或wifi连接手机
查看>>
包装类
查看>>
JDK9-15新特性
查看>>
集合继承结构
查看>>
LinkedList 实现类
查看>>
Vector 实现类
查看>>