Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

В Dart многопоточността се реализира чрез механизма "Isolates" — изолирани нишки с собствена памет. Те позволяват изпълнение на задачи паралелно, но не споделят памет директно, което предотвратява проблеми със синхронизация.

За паралелна обработка на задачи се създават нови Isolates, между които се осъществява обмен на съобщения.

Пример за създаване на 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-интензивни задачи.