浏览器的进程和线程

这篇具有很好参考价值的文章主要介绍了浏览器的进程和线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

浏览器是多进程多线程的应用程序

浏览器进程

主要负责界面显示、用户交互、子进程管理等。浏览器进程内部会启动多个线程处理不同的任务。
网络进程
负责加载网络资源。网络进程内部会启动多个线程来处理不同的网络任务。
渲染进程
渲染进程启动后,会开启一个染主线程,主线程负责执行 HTML、CSS、JS 代码默认情况下,浏览器会为每个标签页开启一个新的渲染进程,以保证不同的标签页之间不相互影响。

线程

一个进程里面可以有多个线程
这里我们主要研究的是渲染进程
一个标签一个进程
浏览器的进程和线程

js的事件循环

事件循环又叫做消息循环,是浏览器渲染主线程的工作方式。在Chrome 的源码中,它开启一个不会结束的 for 循环,每次循环从消息队列中取出第一个任务执行,而其他线程只需要在合适的时候将任务加入到队列末尾即可。过去把消息队列简单分为宏队列和微队列,这种说法目前已无法满足复杂的浏览器环境,取而代之的是一种更加灵活多变的处理方式。根据 W3C官方的解释,每个任务有不同的类型,同类型的任务必须在同一个队列,不同的任务可以属于不同的队列。不同任务队列有不同的优先级,在一次事件循环中,由浏览器自行决定取哪一个队列的任务。但浏览器必须有一个微队列,微队列的任务一定具有最高的优先级,必须优先调度执行。

JS 中的计时器能做到精确计时吗? 为什么?

不行,因为:
计算机硬件没有原子钟,无法做到精确计时
操作系统的计时函数本身就有代最偏差s JS 的计时器最终调用的是操作系统的函数,也就携带了这些偏差
按照 W3C的标准,浏览器实现计时器时,如果嵌套层级超过 5 层,则会带有 4 毫秒的最少时间,这样在计时时间少于4毫秒时又带来了偏差
受事件循环的影响,计时器的回调函数只能在主线程空闲时运行,因此又带来了偏差

如何理解js的异步

JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个并且渲染主线程承担着诸多的工作,渲染页面、执行 JS 都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一户面会导致繁忙的主线程白白的消耗时间,另一方面导致页面无法及时更新,给用户造成卡死现象。
所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时,比如计时器、网络、事件监听,主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾排队,等待主线程调度执行。在这种异步模式下,浏览器永不阻塞,从而最大限度的保证了单线程的流畅运行。文章来源地址https://www.toymoban.com/news/detail-451239.html

到了这里,关于浏览器的进程和线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行

    Win10 专业版 谷歌浏览器 版本 116.0.5845.141(正式版本) (64 位) L盾加密终端 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行,要全部结束谷歌浏览器进程,重新打开浏览器才能使用 任务管理器下面 1.官网重新下载最新版,重新安装谷歌浏览器,过几天又出现(

    2024年02月10日
    浏览(51)
  • 【 Python足彩网站赔率数据文件自动下载(Tkinter+BeautifulSoup+Selenium隐藏浏览器界面,双线程)】

    朋友为了分析足彩的实时赔率,需要每隔一段时间自动下载网站上的excel数据。因此开发了这款软件。 总共就3个代码块,以下是完整源代码。 1.第一步 :创建应用程序界面 2第二步 :获所有需要下载的URL并添加到列表。循环列表。 3第三步 :下载Excel文件。因为是无头浏览器

    2024年01月18日
    浏览(117)
  • Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium

    国产的360安全浏览器,360急速浏览器,QQ浏览器,遨游浏览器甚至新版还未上市的Edge浏览器都是基于Chrome浏览器的开源版本Chronium开发来的。所以360浏览器可以理解为一个定制的Chrome浏览器,最新360安全浏览器是基于Chromium 63版本的,落后正式的Chrome版本。 我们下载对应的2

    2024年02月06日
    浏览(60)
  • 浏览器:浏览器指纹

    一、引子 场景一、绑定用户与浏览器(设备),比如某一个网站的账号给到用户,用户只能在自己的电脑的某浏览器使用。 场景二、精准推送广告。 场景三、公司做营销活动,防止活动奖品被程序薅羊毛。 等等场景我们有什么技术方法实现或避免呢,本文介绍浏览器指纹来

    2024年02月06日
    浏览(61)
  • 浏览器原理 之 浏览器安全

    XSS 攻击,即跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到其他用户浏览的正常网页中。这些恶意脚本通常以 JavaScript 形式出现,并在用户的浏览器中执行。执行的结果可以是窃取用户的cookies、会话令牌,或者对用户的账户进

    2024年04月25日
    浏览(42)
  • 浏览器---浏览器/http相关面试题

    共同点:二者都是以key-value的键值对方式存储在浏览器端,大小大概在5M。 区别: (1)数据有效期不同:sessionStorage仅在当前浏览器窗口关闭之前有效;localStorage始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据; (2)作用域不同:sessionStorage数据只能在同一个

    2024年02月22日
    浏览(51)
  • 对比两款支持扩展的安卓浏览器:kiwi浏览器和狐猴浏览器

    如果你对支持扩展的手机浏览器感兴趣的话,应该早已对kiwi浏览器耳熟能详。而国内也有不少优秀的支持扩展的手机浏览器非常值得一试,最近我正在使用的狐猴浏览器就是一个不错的产品。 可能你正在寻找一个适合自己的手机浏览器,那这篇文章我就想对比一下kiwi浏览器

    2024年02月06日
    浏览(54)
  • Edge浏览器和Google浏览器占用内存情况

    最近发现适用edge浏览器看视频时,或者打开多个网页,电脑就会变得非常卡顿,打开任务管理器发现内存占用较多,网上也有人说edge浏览器确实占用内存较多。但是给出的解决方案是更新windows系统,这个方法显然不能接受,采用google浏览器即可减小内存占用。 下面进行一组

    2024年02月15日
    浏览(43)
  • Ubuntu卸载firefox浏览器安装google浏览器

            Ubuntu20.4系统,默认用的firefox浏览器,在2022.09.25日之后打开钉钉网页版,突然提示目前该浏览器不支持企业钉钉网页版了,请使用UC浏览器或google浏览器,之前firefox是支持打开钉钉网页版的,现在突然打不开有点不习惯,但是呢,如果两个浏览器同时安装使用的话

    2024年02月05日
    浏览(55)
  • 使用Selenium需要浏览器驱动与浏览器版本统一

    安装浏览器驱动 针对不同的浏览器,需要安装不同的驱动。 这里以安装 Chrome 驱动作为演示。 确定浏览器版本 进入设置界面,然后选择 【关于 Chrome】 查看自己的版本信息。这里我的版本是114,下载对应版本的 Chrome 驱动即可。 下载驱动 打开Chrome驱动。单击对应的版本。(

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包