gpt4 book ai didi

javascript - Node "actually"如何处理线程?

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:54 36 4
gpt4 key购买 nike

我阅读了很多关于 Node js 的文章,试图理解事件循环及其模式/反模式。许多作者没有提到的一件事是 Node 实际上处理线程。然而,应用程序程序员当然无法访问它们,但很高兴知道它们存在以及它们何时会启动。

据我了解,当 Ryan Dahl 解释时,线程将仅用于文件系统访问和网络。因此:不是为了计算......我在这里担心的是:为什么不是计算?

即使我在回调函数中放置了一个很长的 for 循环,它也会在执行时阻塞整个循环。由于在 http://www.slideshare.net/cacois/nodejs-patterns-for-discerning-developers 上找到了这张图片所有注册的回调都将由 Node 的高级线程机制处理。但显然不是:(

enter image description here

即使通过异步处理 io 和文件获得了很多速度,为什么不全力以赴,让所有注册的回调都由 Node 的内部线程处理?

但令我震惊的是,共享并发不适用于尝试访问全局应用命名空间的单独线程。 (这可能是一个很大的原因)

你怎么看?

最佳答案

Even if a lot of speed is gained from making io and file handling async, why not go the whole mile and make all the registered callbacks be handled by node's internal threads?

那会破坏 Node.js 的基本“好东西”之一。如果你有这个:

if (a === 7) {
console.log(a);
}

a 在调用 console.log保证7,因为它是同步代码。同步代码的并行执行打破了这一点。当然,您可以在回调中任意中断并将它们变成线程,但这并不比所有其他线程系统好。

还有一个问题是线程能够以任务队列很难做到的方式耗尽系统资源。

关于javascript - Node "actually"如何处理线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620480/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com