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/