目录
node.js 是单线程还是多线程? 为何是单线程还可以不阻塞
是一个基于Chrome-V8JS引擎 设计的单线程的 基于事件驱动的 非阻塞 I/O 模型的一个 js 运行环境
node.js的主线程 是程序员写的这个线程,这个线程的代码是 v8引擎在运行js代码,它提供的异步函数是底层 C/C++在开启线程执行任务。
I/O 耗时操作
让计算机的多核发挥功能,同时执行任务
把任务添加到事件池(event-loop)(解释事件池原理)让异步任务去子线程执行 然后注册一个事件 任务执行完毕完毕以后,就回到主线程执行回调函数
把功能按照模块来封装,方便扩展,维护管理,更有利于开发大型项目
npm 社区 nodejs的模块化社区 是全世界最大的模块市场
因为上层(主线程)的代码(我们写的js代码)是单线程,但是有一些 异步函数 是nodejs底层在开线程运行,所以我们写的代码是单线程,有些异步操作是多线程 非阻塞的。
nodejs中事件池(event-loop)原理
nodejs是一个开源的免费的环境,很多的公司在用它。性能好速度快。资源占用小。
缺点:不安全 ,因为是单线程, 只要有一个地方出错了,整个线程就停止了。