事件循环也可以被称之为消息循环,是浏览器主线程的工作方式.
- 我看到一些文章有描述道,Chrom源代码中
message_loop其实就是一个无止尽的for循环,每次循环都会从消息队列中取出第一个任务执行,而其他线程也只需要在合适时机将任务推入队列末即可。当任务队列没有了之后就会进入休眠直到被其他线程唤醒。其实我也不懂C++之类的。
任务也是存在优先级的
- 每个任务都有一个任务类型,同一个类型的任务必须在一个队列中,不同类型的任务可以分属不同的队列。
- 浏览器必须准备好一个微队列,微队列中的任务优先所有的其他任务执行
在目前Chrome的实现中,至少包含了下面的队列
- 延时队列:用于存放计时器达到后的回调任务,优先级 【中】
- 交互队列:用于存放用户操作后的产生的事件处理任务,优先级【高】
- 微队列:用于存放需要最快执行的任务,优先级【最高】
传送门: juejin.cn/post/714907… 看的出来内容其实来自同一个地方,这里介绍更加详细!不喜勿喷。