Sobes.tech
Back to questions
Junior — Middle
87

Поддерживает ли Dart параллельное выполнение задач или работает только в одном потоке?

Companies where asked
Верме

Answer from AI

sobes.tech AI

Dart поддерживает параллельное выполнение задач, но не через классические потоки, как в Java или C++. Вместо этого используется модель изолятов (Isolates) — это отдельные потоки с собственным пространством памяти, которые не разделяют состояние напрямую. Для обмена данными между изолятами применяются сообщения.

Таким образом, Dart работает с одним основным потоком (UI-потоком в Flutter), но для выполнения тяжёлых или параллельных задач можно создавать изоляты, которые выполняются параллельно и не блокируют основной поток.

Пример создания изолята:

import 'dart:isolate';

void heavyTask(SendPort sendPort) {
  // Выполнение тяжёлой задачи
  int result = 0;
  for (int i = 0; i < 100000000; i++) {
    result += i;
  }
  sendPort.send(result);
}

void main() async {
  ReceivePort receivePort = ReceivePort();
  await Isolate.spawn(heavyTask, receivePort.sendPort);

  receivePort.listen((message) {
    print('Результат из изолята: $message');
    receivePort.close();
  });
}