博客
关于我
加入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/

你可能感兴趣的文章
Mysql 批量杀死进程
查看>>
there is no statement named xxx in this SqlMap
查看>>
spring tx:advice 和 aop:config 配置事务
查看>>
修改layui的后台模板的左侧导航栏可以伸缩
查看>>
Mybatis Generator最完整配置详解
查看>>
报错:For input string
查看>>
ThreadLocal源码分析解密
查看>>
【Java并发编程】并发编程大合集
查看>>
Ubuntu初始化root密码
查看>>
编译android源代码(aosp)
查看>>
verilog一些小知识点注意事项集合
查看>>
C++的数据类型
查看>>
Java流程控制语句
查看>>
scratch3的作品(sb3格式的文件)怎么在移动端(手机)上进行播放呢
查看>>
wincc实现手机APP远程监控
查看>>
pandas DataFrame进行条件选取数据时出现SettingWithCopyWarning的解决方法
查看>>
3.6.X版本的OSG无法打开osgShadow/ShadowVolume的问题
查看>>
LSM树
查看>>
Linux上elasticsearch7集群搭建
查看>>
打开网站工程时遇到配置bower显示404的问题。
查看>>