1 . Node.js 是单线程吗?
答 : Node.js 虽然是单线程模型,但是基于事件驱动、异步非阻塞模式, 可以应用于高并发场景, 避免了线程创建、线程之间上下切换所产生的资源开销 ;
2.Node.js 做耗时的计算时候,如何避免阻塞?
答 : 耗时计算node可以通过内置模块children_process或者fork开启多线程 , 前者适合不同请求操作的快速处理, 后者适合同一个请求操作的负载均衡 ;
3. Node.js如何实现多进程的开启和关闭?
答 :node多进程的开启和关闭对应的children_process和fork模块提供API
4 . Node.js可以创建线程吗?
答 : node 不能创建线程 。 node 是多线程的,单线程的要创建线程只能开启多进程
一 、 cpu 线程 进程 之间的关系
进程 : 是cpu资源分配的最小单位(是能拥有资源和独立运行的最小单位)
线程 : 是cpu 调度的最小单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)
关系 : 不同进程之间也可以通信,不过代价较大 ;
单线程和多线程,都是指在一个进程内的单和多 ;
浏览器是多进程的 对于计算机来说, 每一个应用程序都是一个进程
二 、 浏览器内核(渲染进程)
从前文我们得知,进程和线程是一对多的关系,也就是说一个进程包含了多条线程。
而对于 渲染进程来说,它当然也是多线程的了,接下来我们来看一下渲染进程包含哪些线程。
1.0 . GUI渲染线程:
01) . 负责渲染页面,布局和绘制
02) .页面需要重绘和回流时,该线程就会执行
03) . 与js引擎线程互斥,防止渲染结果不可预期
2.0 . JS引擎线程:
01) . 负责处理解析和执行javascript脚本程序
02) . 只有一个JS引擎线程(单线程)
03) . 与GUI渲染线程互斥,防止渲染结果不可预期
3.0 . 事件触发线程:
01) . 用来控制事件循环(鼠标点击、setTimeout、ajax等)
02) . 当事件满足触发条件时,将事件放入到JS引擎所在的执行队列中
4.0 . 定时触发器线程:
01) . setInterval与setTimeout所在的线程
02) . 定时任务并不是由JS引擎计时的,是由定时触发线程来计时的
03) . 计时完毕后,通知事件触发线程
5.0 . 异步http请求线程:
01) . 浏览器有一个单独的线程用于处理AJAX请求
02) . 当请求完成时,若有回调函数,通知事件触发线程
网友评论