当前位置: 首页 > wzjs >正文

购物网站er图今天最新新闻报道

购物网站er图,今天最新新闻报道,唐山注册公司需要多少钱,做网站php都用什么框架文章目录 前言进程和线程的联系和区别Chrome打开一个页面有多少进程?渲染进程中的线程 进程间的通信方式多标签之间怎么通信? 前言 之前在学习进程和线程的时候,只知道一个进程可以有多个线程,每个进程之间是独立的,一…

文章目录

  • 前言
  • 进程和线程的联系和区别
  • Chrome打开一个页面有多少进程?
    • 渲染进程中的线程
  • 进程间的通信方式
  • 多标签之间怎么通信?

前言

之前在学习进程和线程的时候,只知道一个进程可以有多个线程,每个进程之间是独立的,一个进程的多个线程之间资源是共享的,我对进程和线程的了解仅限于此,最近复习到网络部分的知识,才发现我对进程和线程的理解非常浅显,借此回顾一下

进程和线程的联系和区别

当启动某个程序后,操作系统会给该程序创建一块内存,用来存放代码,运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫进程

而线程是依附于进程的,在进程中使用多线程并行处理能提升运算效率,进程将任务分成很多细小的任务,再创建多个线程,在里面并行分别执行

进程和线程的关系特点是这样的

  • 进程与进程之间需要传递某些数据的话,就需要通过进程通信管道IPC(共享进程最快的方式)来传递
  • 进程与进程之间完全隔离,互不干扰,一个进程的崩溃并不会影响其他进程,避免一个进程出错影响整个程序
  • 一个进程中可以并发多个线程,每个线程并行执行不同的任务
  • 一个进程中的任意一个线程执行出错,会导致这个进程崩溃
  • 同一进程下的线程之间可以直接通信和共享数据
  • 当一个进程关闭之后,操作系统会回收该进程的内存空间

早期浏览器 2007年之前的浏览器并不是多进程的结构,而是单进程的结构,一个进程中包含了网络,js运行环境,渲染引擎,页面,插件,这也导致了很多问题

  • 不稳定 :一个线程卡死,整个程序都会出问题,比如一个标签页卡死可能整个浏览器崩溃
  • 不安全 :浏览器一个进程里是可以共享数据的,那js线程就可以随意访问各个标签页的数据,不合理
  • 不流畅 :一个进程要负责的太多事情,会导致运行效率问题

Chrome打开一个页面有多少进程?

1个浏览器进程 1个GPU进程 1个网络进程 多个渲染进程 多个插件进程

  • 浏览器进程:负责控制浏览器除了标签页以外的界面,包括地址栏书签前进后退 以及负责与其他进程的协调工作 同时提供存储功能
  • GPU进程: 负责整个浏览器界面的渲染

谷歌一开始没有GPU进程,而使用GPU进程的初衷是为了实现3D CSS的效果 只是后面网页 谷歌的UI界面都用GPU来绘制,使得GPU成为浏览器普遍的需求 最后Chorme在多进程架构上也引入了GPU进程

  • 网络进程:负责发起网络请求
  • 插件进程:负责插件运行 因为插件可能会崩溃 为了不影响其他进程导致其他进程崩溃,因此独立出来,成为一个单独进程
  • 渲染进程:负责控制显示tab标签页的所有内容 核心任务是将HTML CSS JS转为用户可以与之交互的网页 排版引擎Blink 和JS引擎V8都是运行在该进程中,默认情况下Chrome会为每个tab标签页创建一个渲染进程

GPU进程和渲染进程都是负责渲染方面的 那么有什么区别?
可以把 GPU 进程想象成一个大工厂的管理者,而渲染进程是工厂里负责具体生产的工人
GPU服务整个系统,为多个应用程序分配GPU资源
渲染进程常与特定应用和窗口绑定,各渲染进程独立工作

渲染进程中的线程

  • GUI渲染线程:负责渲染页面 解析html和CSS,构建DOM树,CSSOM树
  • JS引擎线程:一个tab页中只有一个JS引擎线程(单线程),负责解析和执行JS。它GUI渲染进程不能同时执行,只能一个一个来,如果JS执行过长就会导致阻塞掉帧
  • 计时器线程:指setInterval和setTimeout,因为JS引擎是单线程的,所以如果处于阻塞状态,那么计时器就会不准了,所以需要单独的线程来负责计时器工作
  • 异步http请求线程: XMLHttpRequest连接后浏览器开的一个线程,比如请求有回调函数,异步线程就会将回调函数加入事件队列,等待JS引擎空闲执行
  • 事件触发线程:主要用来控制事件循环,比如JS执行遇到计时器,AJAX异步请求等,就会将对应任务添加到事件触发线程中,在对应事件符合触发条件触发时,就把事件添加到待处理队列的队尾,等JS引擎处理

进程间的通信方式

  • 管道通信(IPC):就是操作系统在内核中开辟一段缓冲区,进程1可以将需要交互的数据拷贝到这个缓冲区里,进程2就可以读取了
  • 消息队列通信:消息队列就是用户可以添加和读取消息的列表,消息队列里提供了一种从一个进程向另一个进程发送数据块的方法,不过和管道通信一样每个数据块有最大长度限制
  • 共享内存通信:就是映射一段能被其他进程访问的内存,由一个进程创建,但多个进程都可以访问,共享进程最快的是IPC方式
  • 信号量通信:比如信号量初始值是1,进程1来访问一块内存的时候,就把信号量设为0,然后进程2也来访问的时候看到信号量为0,就知道有其他进程在访问了,就不访问了
  • socket:其他的都是同一台主机之间的进程通信,而在不同主机的进程通信就要用到socket的通信方式了,比如发起http请求,服务器返回数据

多标签之间怎么通信?

没有办法直接通信,需要有一个类似中介者进行消息的转发和接收,比如

  • localStorage:在一个标签页监听localStorage的变化,然后当另一个标签页修改的时候,可以通过监听获取新数据
  • WebSocket:因为websocket可以实现实时服务器推送,所以服务器就可以来当这个中介者。标签页通过向服务器发送数据,然后服务器再向其他标签推送转发
  • ShareWorker:会在页面的生命周期内创建一个唯一的线程,并开启多个页面也只会使用同一个线程,标签页共享一个线程
  • postMessage
//发送方
window.parent().pastMessage('发送的数据','http://接收的址')
// 接收方
window.addEventListener('message',(e)=>{ let data = e.data })
http://www.dtcms.com/wzjs/102058.html

相关文章:

  • 网站开发推广网络营销第三版课本
  • 网站空间是不是服务器互联网营销外包推广
  • wordpress 角色权限张家界seo
  • 为什么企业需要建设网站?企业培训课程ppt
  • 合肥专业网站建设深圳网站建设
  • 企业门户网站设计专门看广告的网站
  • dux wordpress成都seo整站
  • 赣州网站建设精英微信公众号推广软文案例
  • 电子商务网站建设与管理—李建忠百度助手下载
  • 东莞长安做网站公司爱站网关键词
  • 自建网站编程山西seo和网络推广
  • 网站百科源码百度搜索引擎排名
  • 攀枝花市网站建设湖南靠谱seo优化
  • 网站制作的公司哪个好昆明seo网站建设
  • 怎么做网站logo直通车关键词怎么选 选几个
  • 网站制作方案书站长之家seo综合查询
  • 中山网站制作专业网络广告营销的典型案例
  • 长沙 外贸网站建设公司价格ebay欧洲站网址
  • 渭南经开区seo综合查询怎么用的
  • 做众筹的网站有几个合肥百度搜索排名优化
  • 阿里巴巴企业网站怎么做seo需要付费吗
  • 谷歌网站提交入口百度助手app下载
  • 泰州网站建设哪家好友情链接交易
  • 企业网站开发实训目的杭州seo整站优化
  • 做网站是学什么编程语言深圳seo
  • 如何自做自己的网站西安关键词排名软件
  • 丰宁坝上草原网站建设百度站长平台有哪些功能
  • 成都比较好的网站设计公司广告接单平台app
  • 如何制作动漫网站模板山西seo优化
  • 定制家具品牌杭州seo按天计费