探索Flutter中線程模型/消息循環的底層邏輯

前言

多線程模型以及線程中的事件循環機制在 OS 裏都是必不可少的一部分,也扮演着非常重要的角色,主要用來做異步任務的分發與調度。例如瀏覽器 JSEngine 中的單線程事件循環機制,那麼 Flutter 中的線程模型與事件循環是如何實現的呢?

關於 Flutter 的線程機制,官方給了一個比較宏觀層面的說明,簡單概括如下:

Flutter Engine 不創建/管理線程,都是由對應的平臺層實現,並抽象 Task Runner 概念,共有 4 個 Task Runner ,並且不關心這 4 個 Task Runner 是否是相同的 Task Runner,也不關心是否運行在同一個線程。不過官方還是給出了指導性建議,爲了性能,最好是一個 Task Runner 對應一個 Thread ,4 個 Task Runner 分別爲:

  1. Platform Task Runner :對應平臺如 Android/iOS 的 UI/Main Thread。
  2. UI Task Runner:所有 Dart Framework 層的代碼均在此現場執行。
  3. Raster Task Runner:真正執行渲染任務,光柵化所有從 UI Task Runner中提交過來的任務,最終渲染到屏幕上。
  4. IO Task Runner:通常執行耗時計算任務,例如下載/解碼遠程圖片,再交給 Raster Task Runner 渲染。

原文鏈接:【https://www.infoq.cn/article/MJ6lmZSLbSZPZ5L7DqqG】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章