В каком потоке / изоляте флаттер выполняет операции ввода-вывода? - PullRequest
2 голосов
/ 05 июля 2019

В трепетании при использовании пакета http или при выполнении общих операций ввода-вывода, например

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

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

Я прочитал Архитектура механизма , которая указывает на наличие 4 потоков в модуле

  • Платформа задач Runner
  • UI Task Runner
  • GPU Task Runner
  • IO Task Runner

Основное приложение dartкод выполняется в потоке выполнения задач пользовательского интерфейса.Похоже, что запускающий задачи ввода-вывода предназначен только для движка дротиков, чтобы считывать образы и обрабатывать ввод-вывод изображений, занимающий много времени, а не там, где происходит ввод-вывод приложения.обеспечить, чтобы библиотеки ввода-вывода работали в потоке пользовательского интерфейса, но как насчет самих операций ввода-вывода, существует ли поток ОС, который виртуальная машина Dart использует для выполнения этих операций?

Например, если я пытаюсь загрузить / загрузитьвидеофайл объемом 800 МБ, есть ли фоновый поток ввода-вывода, который использует виртуальная машина Dart, для фактического ввода-вывода?

Следует ли использовать отдельный изолят для операций большого ввода-вывода, таких как загрузка / загрузка больших файлов?

...