目录

🍏 JavaScript 线程机制相关

# 概念

进程(Process):程序的一次执行过程,它占有一片独有的内存空间

线程(thread):是进程内的一个独立执行单元,是程序执行的一个完整流程,是 CPU 的最小调度单位。

image-20220326144058172

  • 应用程序必须运行在某个进程的线程上。
  • 一个进程中至少有一个运行的线程:主线程(进程启动后会自动创建)。
  • 一个进程中也可以通行运行多个线程,即程序是多线程运行的。
  • 一个进程内的数据可以供其中的多个线程直接共享,多个进程之间的数据是不能直接共享的

线程池(Thread Pool):保存多个线程对象的容器,实现对象的反复利用

相关问题:

  • 多进程运行:一个应用程序可以启动多个实例运行。
  • 多线程:在一个进程内,同时有多个线程运行

比较单线程与多线程:

  • 单线程:优点:顺序编程简单易懂。缺点:效率低。
  • 多线程:优点:能够有效提高 CPU 利用率;缺点:创建多线程的开销,线程间切换的开销,死锁与状态同步的问题。

JavaSript 是单线程运行的脚本。但是在使用 HTML5 中的 Web Workers 可以多线程运行。

浏览器运行是都是多线程运行的。

浏览器运行有的是单进程有的是多进程

浏览器内核

  • 是支持浏览器运行的最核心的程序。

  • 不同的浏览器可能不一样。

    • Chrome / Safari: Webkit
    • Firefox:Gecko
    • IE :Trident
  • 内核由很多模块组成:

    主线程

    • JS 引擎模块:负责 JavaScript 程序的编译和运行
    • HTML / CSS 文档解析模块:负责页面文本的解析
    • DOM / CSS 模块:负责 DOM / CSS 在内存中的相关处理
    • 布局和渲染模块:负责页面的布局和效果的绘制(参照内存中的对象

    分线程

    • 定时器模块:负责定时器的管理
    • DOM 事件响应模块:负责事件的管理
    • 网络请求模块:负责 AJAX 等的请求

JavaScript 的代码分类:

  • 初始化代码

  • 回调代码

JavaScript 引擎执行代码的基本流程:

  1. 先执行初始化代码,包含一些特别的代码。
    • 设置定时器(回调函数异步执行)。
    • 绑定监听。
    • 发送 AJAX 请求。
  2. 后面在某个时刻才会执行回调代码
📢 上次更新: 2022/09/02, 10:18:16