相关疑难解决方法(0)

flutter 在哪个线程/隔离上运行 IO 操作?

例如,在使用 http 包或进行常规 IO 操作时出现抖动

import 'package:http/http.dart' as http;

http.Response response = await http.get(url);
if (response.statusCode == 200) {
  var json = jsonDecode(response.body); 
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了引擎架构,它表明引擎中有 4 个线程

  • 平台任务运行器
  • 用户界面任务运行器
  • GPU 任务运行器
  • IO 任务运行器

主应用程序 dart 代码在 UI Task Runner 线程上运行。IO 任务运行器似乎只是让 dart 引擎读取图像处理耗时的图像 IO 而不是应用程序 IO 发生的地方?

我知道 IO 库具有基于 Future 的无阻塞接口,因此我提供给 IO 库的回调将在 UI 线程上运行,但是实际的 IO 操作本身是否存在 Dart VM 用于执行这些操作的操作系统线程操作?

例如,如果我尝试上传/下载一个 800MB 的视频文件,是否有 Dart VM 使用的后台 IO 线程执行实际 IO?

是否应该将单独的隔离用于大型 IO 操作,例如上传/下载大文件?

dart dart-isolates flutter

7
推荐指数
1
解决办法
803
查看次数

标签 统计

dart ×1

dart-isolates ×1

flutter ×1