宏任务 微任务 进程、线程

宏任务 微任务  进程、线程

 

1 进程是cpu资源分配的基本单位;

2  CPU 可以分出很多进程;

3  1个进程又可以分为1个或多个线程;线程是进程的执行流;同一个进程中,多个线程是共享该进程的资源的;

4  浏览器是多进程的;而浏览器内核(浏览器渲染进程是其中一种);

5 浏览器渲染进程 下分为很多线程:

    GIU渲染线程   : 解析html,css 生成DOM树;重绘和回流;与js引擎线程相斥;

    js 引擎线程:单线程工作,每次只能执行一次任务;解析js脚本,js运行耗时过长与导致页面阻塞;

          补充:H5 web-worker 可以创建出一个独立于主线程的后台线程,运行一个脚本操作;运行费时任务

    事件触发线程:事件触发后,将回调函数放入任务队列中

    定时器线程:时间到达后,将回调函数放入任务队列中

    http请求线程:请求成功·后,将回调函数放入任务队列中

 

宏任务:script(整体代码),setTimeout(),setinterval(); I/O; UI reding

微任务:process.nextTick()(node);promise.then() ; 

 

1 先执行主体代码(宏任务);

2 遇到同步代码,在执行栈中直接执行;

3 遇到 settineout 异步宏任务 ,放入宏任务任务队列中;

4 遇到promise .reslove部分执行栈直接执行;then 函数 放入微任务异步任务队列里;

5 遇到同步任务 直接执行;

6 执行栈全部清空;同步任务执行完后,开始第一个事件循环,到任务队列中检查有没有微任务;有,放入执行栈执行;

7 开始第二次事件循环;检查有没有微任务,有,继续执行;没有 异步宏任务放入执行栈执行;

8 如此往复检查任务队列;再放入执行栈执行;再检查,再执行,叫事件循环;

 

宏任务 微任务 进程、线程

上一篇:046.数组-二维数组定义方式


下一篇:Php 笔记4-----php 细节知识