Dart 事件循环机制

2022/9/21 Dart事件循环

本文介绍Dart的事件循环机制。

# Dart 事件循环机制

  • Dart 单线程

    • 其核心分为主线程微任务宏任务
    • 主线程:执行主业务逻辑,网络I/O、本地文件I/O,异步事件等相关任务事件;
    • 事件队列:
      • 微任务队列:包含有 Dart 内部的微任务,主要是通过 scheduleMicrotask 来调度。
      • 事件队列:包含外部事件,例如 I/O 、 Timer ,绘制事件等等。
  • 事件循环

    • 开始执行main函数,并会产品两个任务队列;
    • 判断是否存在微任务,有则执行,执行完成后在继续判断是否还存在微任务,无则判断是否存在事件任务;
    • 如果不存在微任务,则判断是否存在事件任务,有则执行,没有则判断是否有新的微任务;
    • 在微任务和事件任务执行的过程中,一样会产生新的微任务和事件任务,因此需要再次判断是否需要插入队列;
  • 事件循环是否会阻塞

    任务执行是否会阻塞呢?

    Dart 运行过程中也会被一些耗时任务阻塞

  • lsolate 多线程

    lsolate 多线程

    Dart 的单线程叫做isolate线程,每个isolate线程之间是不共享内存的,通过消息机制通信。

最后更新时间: 2022/11/29 10:59:07