javascript中的进程和线程

每天一个前端面试题之 javascript中的进程和线程

首先,给出进程和线程的定义:

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体

线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

简单点来说,进程是资源分配的最小单位,线程是CPU调度的最小单位。如果把进程比作一列火车,那线程就是火车上的每一个车厢。

具体来说,

  1. 一个程序可以有多个进程,一个进程可以有多个线程,但至少有一个线程。(Java是多线程的,而javascript是单线程的。(具体可看js的事件循环机制https://editor.csdn.net/md/?articleId=116449047)
  2. 同一进程下的不同线程之间很容易进行数据共享,可以使用共享内存,但某一线程使用某共享内存时,其他线程必须等待,等该线程结束后才能使用该内存。不同进程之间很难能进行数据共享。
  3. 多个进程之间不会互相影响,但一个线程挂掉会影响到整个进程。

浏览器的运行有单进程的,也有多进程的,比如火狐和旧版的IE是单进程的,谷歌和新版的IE是多进程的,可以在任务管理器中进行查看,每打开的一个浏览窗口都是一个进程。
但是浏览器的运行一定是多线程的。

主线程

  • js引擎模块 : 负责js程序的编译与运行
  • html,css文档解析模块 : 负责页面文本的解析
  • DOM/CSS模块 : 负责dom/css在内存中的相关处理
  • 布局和渲染模块 : 负责页面的布局和效果的绘制(内存中的对象)

分线程

  • 定时器模块 : 负责定时器的管理
  • DOM事件模块 : 负责事件的管理
  • 网络请求模块 : 负责Ajax请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值