[转]阻塞IO与非阻塞IO

https://blog.csdn.net/u010838785/article/details/104455173

https://blog.csdn.net/qq_34638435/article/details/81878301?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

reactor 模式

Reactor 是这样一种模式,他要求主线程(I/O 处理单元,下同)只负责舰艇文件描述符上是否有事件发生,有的话就立即将改时间通知给工作线程。除此之外主线程不做任何其他实质性的工作,读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。
使用同步I/O 模型(以epoll_wait 为例)实现的Reactor 模式的工作流程是:

  • 主线程往epoll 内核时间表中注册socket 上的读就绪事件
  • 主线程调用epoll_wait 等待socket 上有数据可读
  • 当socket 上有数据可读时,epoll_wait 通知主线程。主线程则讲socket可读事件放入到请求队列种
  • 睡眠在请求队列上的某个工作线程被环形,它从socket 读取数据,并处理客户请求,然后往epoll 内科事件表中注册该socket 上的写就绪事件
  • 主线程调用epoll_wait 等待socket 可写
  • 当socket 可写时,epoll_wait 通知主线程。主线程将socket可写书简放入请求队列
  • 睡眠在请求队列上的某个工作线程被环形,它往socket 上写入服务器处理客户请求的结果

在I/O 模型种,“同步”和“异步”区分的是内核向应用程序通知的那种I/O事件。以及该由谁完成I/O读写,在并发模式种,“同步”值得是程序完全按照代码序列的顺序执行,“异步”值得是程序的执行需要由系统的事件来驱动。
[转]阻塞IO与非阻塞IO

原文链接: https://www.cnblogs.com/wsl-hitsz/p/14584099.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    [转]阻塞IO与非阻塞IO

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/397325

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月10日 上午9:29
下一篇 2023年4月10日 上午9:29

相关推荐