当 Node.js仍然在内部依赖 Threads 时,它本身是如何变得更快的?
我刚刚观看了以下视频:Node简介.js但仍然不明白您如何获得速度优势。
主要是,Ryan Dahl(Node.js的创建者)说Node.js是基于事件循环的,而不是基于线程的。线程很昂贵,应该只留给并发编程专家使用。
稍后,他展示了Node的架构堆栈.js它具有底层C实现,该实现在内部具有自己的Thread池。因此,很明显,Node.js开发人员永远不会启动自己的线程或直接使用线程池......它们使用异步回调。我明白这一点。
我不明白的是Node.js仍然使用线程......它只是隐藏了实现,所以如果50个人请求50个文件(当前不在内存中),那么不需要50个线程,这怎么会更快?
唯一的区别是,由于它是在 Node 内部管理的.js开发人员不必对线程详细信息进行编码,但在下面,它仍然使用线程来处理 IO(阻塞)文件请求。
因此,你真的不是只是把一个问题(线程)隐藏起来,而这个问题仍然存在:主要是多个线程,上下文切换,死锁......等?
这里肯定有一些我仍然不明白的细节。