Sobes.tech
Back to questions
Junior — Middle
94

Можно ли использовать многопоточность в Dart для параллельной обработки задач?

Companies where asked
Верме

Answer from AI

sobes.tech AI

В Dart многопоточность реализована через механизм "Isolates" — отдельные изолированные потоки с собственной памятью. Они позволяют выполнять задачи параллельно, но не разделяют память напрямую, что предотвращает проблемы с синхронизацией.

Для параллельной обработки задач создаются новые Isolate, между которыми происходит обмен сообщениями.

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

import 'dart:isolate';

void task(SendPort sendPort) {
  // Некоторая тяжёлая задача
  int result = 0;
  for (int i = 0; i < 1000000; i++) {
    result += i;
  }
  sendPort.send(result);
}

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

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

Таким образом, в Dart можно использовать параллельную обработку с помощью Isolates, что эффективно для CPU-интенсивных задач.