zoukankan      html  css  js  c++  java
  • Node的异步I/O

    node是单线程非阻塞异步I/O的模式。

    • 阻塞I/O:完成整个数据获取的过程;
    • 非阻塞I/O:不带数据,直接立即返回,要获取数据,还需通过文件描述符再次读取。

    node完成整个异步I/O的有事件循环、观察者、请求对象、执行回调;

    • 事件循环:这是node自身的执行模式。在进程启动时,node会创建一个循环,每执行一次循环就会查看是否有事件处理,有,就取出事件及相关的回调函数。如果存在关联的回调函数,就执行他们,然后进入下一个循环,如果不在有事件处理就退出循环。

    • 观察者:浏览器在解析页面时,有些事件可能是来自用户的点击或者加载某些文件是产生,而这些产生的事件都是相应的观察者,当我们在执行一个node进程的时候,每一个事件循环都有一个或多个观察者,而判断是否有事件要处理的过程就是向这些观察者询问是否有要处理的事件。

    • 请求对象:我们在进行异步调用的时候就会封装一个请求对象,用于放入I/O线程池等待执行,已完成整个异步I/O的I/O操作。

    • 执行回调:组装好请求对象,然后总入I/O线程池等待执行,实际上是完成了异步I/O的第一部分,回调执行时第二部分。在每次事件循环执行中,他调用的请求对象都会加入到I/O观察者的队列,然后将其当做事件处理。

    • 整个异步I/O的流程图:

    • 总结
      异步调用——(请求对象)——>I/O线程池——(观察者)——>事件循环。

  • 相关阅读:
    WPF一步一脚印系列(1):万事起头难
    php设置时区
    关于我的几个博客
    php如何实现页面跳转
    穷人与富人的区别
    如何抓取关键字在百度搜索的排名
    我的博客园开通了
    在Foxmail中出现SSL连接错误应该如何解决
    javascript实现键盘按下回车时触发
    关于网站分页
  • 原文地址:https://www.cnblogs.com/yehui-mmd/p/7413852.html
Copyright © 2011-2022 走看看