【问题标题】:Node.js single threaded or not? [duplicate]Node.js 是否单线程? [复制]
【发布时间】:2014-08-08 06:34:59
【问题描述】:

我在 Node.js 处理模型中读到该节点只需使用事件循环接受请求并将工作交给执行异步操作的 c++ 工作线程。

我也读到了:

  • 节点事件不是单线程的。
  • 在节点中,除了您的代码之外,所有东西都并行运行。
  • 在节点中,如果您使用 settimeout 函数,那么在那段时间内什么都不会起作用。

我做了一些研究,但无法得出结论。我的问题是:

  • 如果节点使用 c++ 工作线程,你怎么能说它是单线程的?
  • 除了我们的代码之外,所有东西是如何并行的?
  • settimeout 是真的还是假的?

【问题讨论】:

  • Node 中的 JavaScript 执行是单线程的,但 Node 确实使用了多线程(脚本执行只是整个平台的一部分)。其他的保留用于实现异步 API 的本机代码。

标签: javascript multithreading node.js


【解决方案1】:

Node.js 裸机在单个进程、单个线程上运行。

但是有一个 webworker 扩展允许运行多个线程:

https://www.npmjs.org/package/webworker-threads

要生成多个进程,请查看cluster module

(在此处查看一个不错的更新教程:http://blog.carbonfive.com/2014/02/28/taking-advantage-of-multi-processor-environments-in-node-js/

还有关于该主题的最新答案:

What is Node.js?

https://stackoverflow.com/a/8685968/1060686

【讨论】:

  • 所有与节点相关的答案都快 2 岁了。我想要一些新的意见。
  • 嗯,对于 NodeJS 来说,答案似乎还是一样的。如果您不关心使用分叉,根据其评论,JXcore 似乎是一个相当不错的:jxcore.com/home(不过我还没有尝试过)
  • @PankajJindal Node 在 2 年内没有改变太多的基础。
猜你喜欢
  • 2021-04-17
  • 1970-01-01
  • 2019-05-10
  • 2020-12-20
  • 1970-01-01
  • 2020-09-19
  • 2011-06-29
  • 2022-01-02
相关资源
最近更新 更多