Dart 事件循环机制
Smoothness 2022/9/21 Dart事件循环
本文介绍Dart
的事件循环机制。
# Dart 事件循环机制
Dart
单线程
- 其核心分为
主线程
、微任务
、宏任务
。 主线程
:执行主业务逻辑,网络I/O、本地文件I/O,异步事件等相关任务事件;- 事件队列:
微任务队列
:包含有 Dart 内部的微任务,主要是通过 scheduleMicrotask 来调度。事件队列
:包含外部事件,例如 I/O 、 Timer ,绘制事件等等。
- 其核心分为
事件循环
- 开始执行main函数,并会产品两个任务队列;
- 判断是否存在微任务,有则执行,执行完成后在继续判断是否还存在微任务,无则判断是否存在事件任务;
- 如果不存在微任务,则判断是否存在事件任务,有则执行,没有则判断是否有新的微任务;
- 在微任务和事件任务执行的过程中,一样会产生新的微任务和事件任务,因此需要再次判断是否需要插入队列;
事件循环是否会阻塞
任务执行是否会阻塞呢?
Dart 运行过程中也会被一些耗时任务阻塞
lsolate 多线程
lsolate 多线程
Dart 的单线程叫做isolate线程,每个isolate线程之间是不共享内存的,通过消息机制通信。