我是靠谱客的博主 靓丽丝袜,最近开发中收集的这篇文章主要介绍javascript中的进程和线程每天一个前端面试题之 javascript中的进程和线程,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
每天一个前端面试题之 javascript中的进程和线程
首先,给出进程和线程的定义:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
简单点来说,进程是资源分配的最小单位,线程是CPU调度的最小单位。如果把进程比作一列火车,那线程就是火车上的每一个车厢。
具体来说,
- 一个程序可以有多个进程,一个进程可以有多个线程,但至少有一个线程。(Java是多线程的,而javascript是单线程的。(具体可看js的事件循环机制https://editor.csdn.net/md/?articleId=116449047))
- 同一进程下的不同线程之间很容易进行数据共享,可以使用共享内存,但某一线程使用某共享内存时,其他线程必须等待,等该线程结束后才能使用该内存。不同进程之间很难能进行数据共享。
- 多个进程之间不会互相影响,但一个线程挂掉会影响到整个进程。
浏览器的运行有单进程的,也有多进程的,比如火狐和旧版的IE是单进程的,谷歌和新版的IE是多进程的,可以在任务管理器中进行查看,每打开的一个浏览窗口都是一个进程。
但是浏览器的运行一定是多线程的。
主线程
- js引擎模块 : 负责js程序的编译与运行
- html,css文档解析模块 : 负责页面文本的解析
- DOM/CSS模块 : 负责dom/css在内存中的相关处理
- 布局和渲染模块 : 负责页面的布局和效果的绘制(内存中的对象)
分线程
- 定时器模块 : 负责定时器的管理
- DOM事件模块 : 负责事件的管理
- 网络请求模块 : 负责Ajax请求
最后
以上就是靓丽丝袜为你收集整理的javascript中的进程和线程每天一个前端面试题之 javascript中的进程和线程的全部内容,希望文章能够帮你解决javascript中的进程和线程每天一个前端面试题之 javascript中的进程和线程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复