【发布时间】:2019-11-16 07:20:02
【问题描述】:
例如在使用 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);
}
我已经阅读了The engine architecture,这表明引擎中有 4 个线程
- 平台任务运行器
- UI 任务运行器
- GPU 任务运行器
- IO 任务运行器
主应用程序 dart 代码在 UI 任务运行线程上运行。 IO 任务运行器似乎只供 dart 引擎读取图像处理耗时的图像 IO,而不是应用程序 IO 发生的位置?
我知道 IO 库具有基于 Future 的无阻塞接口,因此我提供给 IO 库的回调将在 UI 线程上运行,但实际 IO 操作本身呢? Dart VM 正在使用 OS 线程做这些操作?
例如,如果我尝试上传/下载 800MB 的视频文件,是否有 Dart VM 使用的后台 IO 线程来执行实际 IO?
是否应该为上传/下载大文件等大型 IO 操作使用单独的隔离?
【问题讨论】:
标签: flutter dart dart-isolates