首页 > 其他分享 >消息队列和事件循环

消息队列和事件循环

时间:2023-01-03 23:00:25浏览次数:37  
标签:队列 消息 任务 循环 事件 执行 延迟

消息队列和事件循环系统来驱动浏览器页面

浏览器页面是由消息队列和事件循环系统来驱动的。

  1. 渲染进程专门有一个 IO 线程用来接收其他进程传进来的消息,接收到消息之后,会将这些消息组装成任务发送给渲染主线程,IO 线程中产生的新任务添加进消息队列尾部。
  2. 渲染主线程会循环地从消息队列头部中读取任务,执行任务。
  3. 消息队列可以存放要执行的任务

微任务队列

每个宏任务下都会维护一个微任务队列

延迟任务队列

在 Chrome 中除了正常使用的消息队列之外,还有另外一个有一个延迟任务队列。说是队列,为了和消息队列统一起来,不然表述起来有点拗口,其实是一个hashmap结构。

执行时机

处理完消息队列中的一个任务之后,就开始处理延迟任务队列。会计算延迟任务队列中的每个任务是否到期了,到期了就去执行,直到所有到期的任务都执行结束,才会进入下一轮循环!

标签:队列,消息,任务,循环,事件,执行,延迟
From: https://www.cnblogs.com/superlizhao/p/17023636.html

相关文章

  • js 之二 事件对象
    事件对象/当事件的响应函数被触发时,浏览器每次都会讲一个事件对象作为实参传递响应函数;在事件对象中封装了当前事件相关的一切信息,比如:鼠标的,键盘的操作//当鼠标在are......
  • 第二十章《Java Swing》第4节:事件处理与监听器
    ​当程序员向窗体上添加了按钮等组件之后就能够操作这些组件,但在20.3小节的各个案例中,虽然在窗体上添加了一些按钮,但点击这些按钮并没有任何反应,因此这些按钮也就成了毫无意......
  • C语言学习第三天(while循环)
    1、while语句while(表达式)      循环语句:例题:打印1-10:#include<stdio.h>intmain(){inti=1;while(i<=10){printf("%d\n",i);i++;}retu......
  • 消息队列:第四章:延迟检查队列
    分布式事务的异步通信问题使用分布式事务异步通信的结构,一个很大的问题就是不确定性。一个消息发送过去了,不管结果如何发送端都不会原地等待接收端。直到接收端再推送回来......
  • 【队列】LeetCode 232. 用栈实现队列
    题目链接232.用栈实现队列思路设置一个主栈mainStack和一个辅助栈assistantStack,在进行入队的时候,将mainStack中的元素全部放入assistantStack中,再将x入队,然......
  • 【队列】LeetCode 225. 用队列实现栈
    题目链接225.用队列实现栈思路设置一个主队列mainQueue和一个辅助队列assistantQueue,在进行压栈的时候,将mainQueue中的元素全部放入assistantQueue中,再将x压......
  • C# 委托事件简介
    简单理解C#委托事件,示例如下所示:usingSystem;///<summary>///---------------------委托步骤---------------------///第一步:声明委托///第二步:委托使用方法的......
  • 消息队列:第五章:RabbitMQ的使用
    第一步:使用之前先安装好RabbitMQ,建议安装在linux系统下安装配置RabbitMQ:https://blog.csdn.net/qq_33450681/article/details/85339315第二步:在配置文件下配置rabbitmq:......
  • 关于uniapp多层弹窗click事件点击唤起textarea键盘的问题
    原因由于textarea在原生组件中优先级高,导致click事件会优先触发textarea的点击中间遇到的问题由于使用cover-view将组件优先级实现了覆盖textarea的优先级,但是弹窗中的......
  • 2022年度全球数据泄露、黑客事件盘点
    2022年11月1日,Termly更新了《98个最大的数据泄露、黑客和曝光事件》(98BiggestDataBreaches,Hacks,andExposures)。随着越来越多的公司在网上开展业务,网络安全漏洞也相......