node.js - Node.js 线程池的困惑

标签 node.js events

Node.js 使用线程池对系统调用进行排队的事实是否违背了其总体目的?我的理解是 Node.js 通过事件循环提供纯粹基于事件的代码,但是,如果每个事件都在幕后生成一个线程,那么它与 apache 有什么不同,apache 也会生成用于阻塞调用的线程?我的意思是,如果像 apache 这样的东西不使用线程池,它可能会更有效,但除此之外,它似乎是一样的?由于 JS 的执行速度比 php 更快,因此可能还会存在一些速度差异...

最佳答案

有两个主要原因,您可能需要 Node :

  1. 性能

AFAIK,node 尽可能利用低级非阻塞 API;我将线程池视为当无阻塞原语根本不存在时使用的某种后备。

有关详细信息,请参阅:

When is the thread pool used?

Confusion about node.js internal asynchronous I/O mechanism

  • 没有多线程
  • 不仅仅是速度。事件循环驱动的异步回调/Promises/CSP 是一种编写代码的方法,“并行运行任务”,但没有显式锁(并且没有那么显式的死锁和竞争条件)。许多尝试过多线程编程的人倾向于欣赏这些半新的范例。

    关于node.js - Node.js 线程池的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428429/

    相关文章:

    java - 如何检测 SWT Table 的滚动条可见性变化

    jquery - "Shift + Arrow key"的键码是什么?

    swift - MouseDown 事件阻止 NSCollectionView 委托(delegate)方法

    javascript - 如何在 JavaScript Node.js 中将 Buffer 数据类型转换为 Base64

    javascript - 类型错误 : Cannot read property 'id' of undefined when trying to make discord bot

    javascript - 使用 get-image-colors 包获取颜色量

    jquery - 单击除

    c# - RadListView ItemCommand 未触发

    javascript - 使用 Node 和 https localhost 获取第三方链接的 api

    javascript - 将其锁定在 chai 中