- Node.js 12实战
- 赵荣娇
- 381字
- 2025-02-25 04:05:54
2.5.3 同步/异步和阻塞/非阻塞
同步和异步是相对于操作结果来说的,是否会等待结果返回。阻塞和非阻塞是相对于线程是否被阻塞来说的。
有人也许会把阻塞调用和同步调用等同起来,实际上它们是不同的。其实,这两者存在本质的区别,它们的修饰对象是不同的。阻塞和非阻塞是指进程访问的数据如果尚未就绪,进程是否需要等待,简单来说,这相当于函数内部的实现区别,也就是未就绪时是直接返回还是等待就绪。而同步和异步是指访问数据的机制,同步一般指主动请求并等待IO操作完毕的方式,当数据就绪后,在读写的时候必须阻塞,异步则指主动请求数据后便可以继续处理其他任务,随后等待IO操作完毕的通知,这可以使进程在数据读写时也不阻塞。
对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。当工作在阻塞模式的时候,如果在没有数据的情况下调用该函数,当前线程就会被挂起,直到有数据为止。