美文网首页
Dart 消息循环机制

Dart 消息循环机制

作者: 一个半吊子工程师 | 来源:发表于2020-09-23 15:26 被阅读0次

在Dart中,实际上有两种队列:

事件队列(event queue),包含所有的外来事件:I/Omouse eventsdrawing eventstimersisolate之间的信息传递。

微任务队列(microtask queue),表示一个短时间内就会完成的异步任务。它的优先级最高,高于event queue,只要队列中还有任务,就可以一直霸占着事件循环。microtask queue添加的任务主要是由 Dart内部产生。

因为 microtask queue 的优先级高于event queue ,所以如果 microtask queue有太多的微任务, 那么就可能会霸占住当前的event loop。从而对event queue中的触摸、绘制等外部事件造成阻塞卡顿。

在每一次事件循环中,Dart总是先去第一个microtask queue中查询是否有可执行的任务,如果没有,才会处理后续的event queue的流程。

消息队列

正如上面的流程图,当main方法退出后,event循环就开始它的工作。首先它会以FIFO的顺序执行micro task,当所有micro task执行完后它会从event 队列中取事件并执行。如此反复,直到两个队列都为空。

2.Dart的单线程执行

当一个Dart应用开始的标志是它的main isolate执行了main方法。当main方法退出后,main isolate的线程就会去逐一处理消息队列中的消息。

Dart的单线程执行

相关文章

网友评论

      本文标题:Dart 消息循环机制

      本文链接:https://www.haomeiwen.com/subject/ptloyktx.html