Node异步模型原理分析

异步模型存在的必要性

1. 用户体验

前端:通过异步的方式使得资源请求期间UI不停顿,不影响用户的交互行为,应用在使用期间依旧可以相应用户的交互行为,给用户提供鲜活的页面。

后端:使得第一个资源的获取不会影响第二个资源,使得多个资源获取的时间消耗变为MAX(M,N,…)。

2. 资源分配

Node在资源分配问题上,利用单线程,远离多线程死锁,状态同步等问题;利用异步I/O,让单线程远离阻塞,以更好的利用CPU。

阻塞,非阻塞,同步,异步,并行,并发

在学习Node.js过程中,阅读到异步I/O的内容时发现自己对异步,同步,阻塞,非阻塞以及并行和并发的概念并不清楚,因此正好在此对上述内容进行学习。

在理解阻塞,非阻塞,异步,同步概念时,首先明确I/O调用是应用程序发起的,I/O执行则是操作系统处理的,而I/O调用的目的是将进程的内部数据迁移到外部即输出,或者将外部数据迁移到进程内部即输入。以一个进程的输入类型的I/O调用为例,它将完成以下工作内容:

  1. 进程向操作系统请求外部数据
  2. 操作系统将外部数据加载到内核缓冲区
  3. 操作系统将数据从内核缓冲区拷贝到进程缓冲区
  4. 进程读取数据继续后面的工作

从上述工作内容来看我们更加理解一个I/O操作,应用程序和操作系统都干了什么。

1. 阻塞&非阻塞

阻塞和非阻塞和是描述应用系统对于操作系统I/O是否处于就绪状态的处理方式。

阻塞的处理方式是在应用进程向操作系统发送I/O调用之后,线程或进程挂起,直到操作系统将数据从内核缓冲区拷贝到进程缓冲区。

而非阻塞的处理方式是在应用程序向操作系统发送I/O调用之后,线程或进程并不挂起,而是去执行其他既定代码,然后通过轮询就绪状态来判断数据是否被拷贝到进程缓冲区。

对于非阻塞的情况,虽

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值