0
点赞
收藏
分享

微信扫一扫

【JavaScript】线程机制


目录

  • ​​一、线程与进程​​
  • ​​1. 进程​​
  • ​​2. 线程​​
  • ​​3. 进程与线程的关系​​
  • ​​二、浏览器内核​​
  • ​​三、JavaScript的单线程​​

一、线程与进程

1. 进程

(1)概念:进程是指程序的一次执行,它占有一片独立的内存空间,在Windows操作系统下,我们可以通过任务管理器查看进程。
(2)分类:同一时间内,当计算机有两个或两个以上进程处于并行状态,则就是对进程;只有一个进程时,则就是单进程。

2. 线程

(1)概念:线程是进程内一个独立的执行单元,是cpu的基本调度单位,是程序执行的一个完整流程。
(2)多线程:多线程是指在一个进程内,同时有多个线程运行(浏览器的运行就是多线程的)。
(3)单线程与多线程:

  • 单线程优点:简单易懂,编码简单
  • 单线程缺点:效率低
  • 多线程优点:有效提高cpu的利用率
  • 多线程缺点:创建多线程开销大,线程间切换开销大
3. 进程与线程的关系

(1)一个进程至少有一个运行的线程,即主线程,进程启动后会自动创建。

(2)一个进程内的数据可以供多个线程直接共享使用,多个进程之间的数据不能直接共享使用。

(3)应用程序必须运行在某个进程的某个线程上面。

【JavaScript】线程机制_主线程

二、浏览器内核

  1. 概念:浏览器的内核是支持浏览器运行最核心的部分。浏览器内核可以分为两部分:渲染引擎和JS引擎。
  2. 主流浏览器的内核
    (1)IE浏览器:Trident
    (2)Firefox浏览器:Gecko
    (3)Chrome浏览器:以前是Webkit,现在是Blink
    (4)Safari浏览器:Webkit
  3. 内核的模块及功能
  • JS引擎模块:负责JS程序的编译与运行
  • HTML,CSS文档解析模块 : 负责页面文本的解析
  • DOM/CSS模块 : 负责dom/css在内存中的相关处理
  • 布局和渲染模块 : 负责页面的布局和效果的绘制
  • 定时器模块 : 负责定时器的管理
  • 网络请求模块 : 负责服务器请求(常规/Ajax)
  • 事件响应模块 : 负责事件的管理

三、JavaScript的单线程

  1. JavaScript的一大特点就是单线程,这主要和它的用途有关,作为一种浏览器的脚本语言,JavaScript的主要作用就是与用户的交互,以及操作DOM元素。
  2. 为了提高CPU的效率,在HTML5中,提出了Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。
  3. 任务队列
    因为JavaScript的单线程的,所以任务在执行时很多时候CPU都会是空闲状态,所以就把任务分为了两种:同步任务和异步任务
  • 同步任务:在主线程上排队执行的任务,只有当一个任务执行完毕,才会执行下一个任务。
  • 异步任务:异步任务不进入主线程,而是进入任务队列,只有当任务队列通知主线程,异步任务可以执行时,该任务才会进入主线程执行。
  1. 异步任务的执行机制:
    (1)所有的同步任务都在主线程执行,形成一个执行栈
    (2)在主线程之外有一个任务队列,在同步任务执行过程中,异步任务会被放入任务队列中,成为等待状态
    (3)等执行栈中所有的同步任务都执行完毕,系统就会读取任务队列,任务队列中的异步任务就结束等待状态,进入执行栈,开始执行。
    (4)主线程不断重复上述步骤


举报

相关推荐

0 条评论