use*_*778 5 javascript multithreading node.js
我是NODE.JS的新手.我在node.js中读到,只存在单个事件循环(因为它的单线程).
现在假设,案例就是这样,最终用户发出请求,下面的代码片段是用户试图运行的模块的一部分:
....some code before......
longRunningOperation(argumentsForLongOperation, callbackMethod(argumentsForCallBack));
....some code after......
Run Code Online (Sandbox Code Playgroud)
由于nodejs是异步的,因此事件循环将调用longRunningOperation
并移动到下一行代码,如果模块中有任何代码行则执行.
现在当longRunningOperation
返回时,我的事件循环如何知道它现在应该在longRunningOperation
返回时运行回调.
在java中我们有方法堆栈,并且线程停留在longRunningOperation
被调用的点,因此当函数返回时,线程从完成调用堆栈后恢复.
我的问题是如何在node.js中知道事件循环longRunningOperation
已经返回并且它需要现在调用callBack()
函数?
它不记得了。它longRunningOperation
本身需要告诉事件循环 a) 它保持住callbackMethod
,b) 当它完成时应该执行回调。这就是为什么只有本机函数是异步的,普通的 JavaScript 代码无法访问事件循环。它们也会立即返回,即使在系统级别,它们通常也是异步的。如果不是,他们将必须生成一个线程来进行计算(仍然从生成中立即返回)。
归档时间: |
|
查看次数: |
65 次 |
最近记录: |