multithreading - NodeJS 真的是单线程的吗?

标签 multithreading architecture node.js

Node.js 通过将基于事件的模型置于其核心,使用事件循环而不是线程来解决“每个连接一个线程问题”。 所有昂贵的 I/O 操作总是异步执行,并在启动的操作完成时执行回调。

如果发生任何操作,则观察由 epoll() 等多路复用机制处理。

我现在的问题是:

  • 为什么 NodeJS 在使用阻塞系统调用时不阻塞 选择/epoll/kqueue?

  • 或者说NodeJS根本不是单线程的,所以第二个线程是
    有必要使用 select/epoll/kqueue 观察所有 I/O 操作吗?

最佳答案

NodeJS 是 evented(website 的第二行),不是单线程的。它在内部处理执行 select/epoll/kqueue 处理所需的线程,而无需用户显式管理,但这并不意味着其中没有线程使用。

关于multithreading - NodeJS 真的是单线程的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018093/

相关文章:

c# - 在单元测试中确定线程安全

ios - 客户端 (iOS) 上的核心数据缓存来自服务器策略的数据

Android 应用程序架构 - MVVM 还是 MVC?

node.js - 使用 .where() Query with .update() 通过 Mongoose ?

javascript - dotenv 中导出 SOME_ENV_VAR=KEY 和 SOMEOTHER_ENV_VAR=KEY 之间的区别?

javascript - 如何在条件语句中结束 emitter.on

c++ - 阻塞读和非阻塞读有什么区别?

python 线程 - 将参数传递给线程的最佳方法

python - 在 python 中稍后杀死线程

api - 如何在 Node.js 中最好地创建 RESTful API