首页 > 编程语言 > 详细

宏任务 微任务 进程、线程

时间:2021-09-06 05:03:34      阅读:23      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

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 如此往复检查任务队列;再放入执行栈执行;再检查,再执行,叫事件循环;

 

宏任务 微任务 进程、线程

原文:https://www.cnblogs.com/chen-da-da/p/15227982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!