zoukankan      html  css  js  c++  java
  • js单线程理解

    一.进程和线程

    1.进程: 是CPU资源分配的最小单位(是能拥有资源和独立运行的最小单位)。

    2.线程: 是CPU调度的最小单位(线程是建立再进程的基础上的一次程序运行单位,一个进程可以有多个线程

    3.单线程和多线程: 都是指再一个进程内的单和多

    二.浏览器是多进程的,每个窗口都是一个进程,可以打开任务管理器查看到多个进程任务

    三.浏览器包含哪些进程

    1.主进程

    •  协调控制其他子进程(创建,销毁)
    • 浏览器页面显示,用户交互,前进,后退,收藏
    • 将渲染进程得到的内存中的Bitmap,绘制到用户界面上
    • 处理不可见操作,网络请求,文件访问等

    2.第三方插件进程

    • 每种类型的插件对应一个进程,仅当使用改插件的时候才创建

    3.GPU进程

    • 勇于3D绘制等

    4.渲染进程,就是我们说的浏览器内核

    • 负责页面渲染,脚本执行,事件处理等
    • 每一个tab页一个渲染进程

    四.浏览器内核(渲染进程)

    1.GUI渲染进程

    • 负责渲染页面,布局和绘制
    • 页面需要重绘和回流时,改现成就会执行
    • 与js引擎线互斥,防止渲染结果不可预期

    2.JS引擎线程

    • 负责处理解析和执行javascript脚本程序
    • 只有一个JS引擎线程(单线程)
    • 与GUI渲染线程互斥,防止渲染结果不可预期

    3.事件触发线程

    • 用来控制时间循环(鼠标点击、setTimeout、ajax等)
    • 当时间满足出发条件时,将事件放入到JS引擎所在的执行队列中

    4.定时触发器线程

    • setInterval与seTimeout所在的线程
    • 定时任务并不是由JS引擎计时的,是由定时触发线程计时的
    • 计时完毕后,通知事件触发线程

    5.异步http请求线程

    • 浏览器有一个单独的线程用于处理AJAX请求
    • 当请求完成时,若有回调函数,通知事件触发线程
  • 相关阅读:
    整合Druid数据源
    SpringBoot与数据访问
    IDEA spirng boot @Autowired注解 mapper出现红色下划线解决方法
    IntelliJ Idea 常用快捷键列表
    docker 安装mysql示例
    设计模式都没用过,好意思出去面试?
    为什么 Java 线程没有 Running 状态?
    厉害了,淘宝千万并发,14 次架构演进…
    Redis 内存满了怎么办……
    Java 线程池 8 大拒绝策略,面试必问!
  • 原文地址:https://www.cnblogs.com/wuxu-dl/p/14903422.html
Copyright © 2011-2022 走看看