nodejs有多线程吗?
Does nodejs have multithreading under the hood?
我正在尝试本教程中的非阻塞代码示例:
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("Program Ended");
假设我有单处理器CPU。谁管理callback function
和console.log()
方法之间的CPU时间?Nodejs核心是否有线程管理器之类的东西?它是如何工作的?
虽然LibUV(在node.js中执行IO的库)肯定在后台使用了一个小线程池,但非阻塞IO本身并不使用线程来实现非阻塞。
简而言之,你告诉操作系统初始化一个非阻塞IO操作。操作系统与相关驱动程序通信,然后将流返回给应用程序。相关驱动程序自己操作,不使用线程模型。当IO完成时,驱动程序中断操作系统,然后通知你的应用程序IO已经完成。然后,应用程序将关联的回调从队列中取出并启动它。
整个机制不需要额外的线程。使用线程来并行化基于cpu的任务,使用异步IO来并行化基于IO的任务。执行IO的不是CPU,而是一个专门的硬件+驱动程序,因此不需要额外的线程。
相关文章:
- javascript中的多线程
- Javascript支持多线程吗
- Doppio:多线程是如何工作的,有什么限制吗
- 为什么Javascript SetTimeout()不是多线程的
- 从多线程C++插件回调NodeJS Javascript函数
- 电子框架是否允许网络工作者进行多线程处理
- 如何使用并行/多线程Hamsters.js Javascript库编辑数组中的对象属性
- 是否可以使用多线程执行Javascript函数
- 使用不同选项卡的Javascript中的多线程
- IONIC是否支持用Java开发的多线程和调用jar库
- 纳肖恩多线程编程
- 节点JS单线程与多线程(CPU利用率:有什么区别吗?
- JavaScript 回调 - 多线程
- 有时,JavaScript是多线程的
- 使用多线程.js访问范围
- 这个 Web worker 代码是多线程的吗,我是否获得了什么
- Javascript 多线程两个窗口焦点
- AJAX 以多线程方式运行
- 是否有可能在nodejs中实现多线程?
- nodejs有多线程吗?