node.js当时只执行一个上下文吗?

时间:2016-04-20 21:29:04

标签: javascript node.js concurrency ecmascript-6 nonblocking

Node.js当时只执行一个上下文或单个代码指令而不考虑上下文吗?

如果完成了两个非阻塞IO操作并调用了它们的回调,它们会同时运行还是Node.js将完全执行第一个回调,然后执行第二个回调?

使回调函数变得简单和简单是否更好?这会改善并发性吗?

1 个答案:

答案 0 :(得分:1)

node.js是一种EDA(事件驱动的体系结构),因此对于应用程序代码而言是非并发的。这并不意味着没有任何并发​​线程。事实上,I / O是在并发线程上执行的,但是它们的数据被放在一个队列中,该队列本身就是对I / O消息进行序列化。这样,并行性就被序列化了。您无法在应用程序代码中注意到并发性。把它想象成你只有一个线程,你根本不能“跳转”或“交错”代码执行。

如果您遇到大量I / O消息,更快的处理肯定会有所帮助。快速回调函数意味着您可以在更短的时间内处理更多内容,从而避免I / O队列拥塞。这就是你永远不应该阻止的原因。