Sobes.tech
Junior — Middle

Lehet-e több szálon futtatni Dartban a feladatok párhuzamos feldolgozására?

sobes.tech MI

Válasz az MI-től

A Dartban a több szálú végrehajtás az "Isolates" mechanizmuson keresztül valósul meg — elszigetelt szálak saját memóriával. Ezek lehetővé teszik feladatok párhuzamos végrehajtását, de nem osztják meg közvetlenül a memóriát, így elkerülve a szinkronizációs problémákat.

A feladatok párhuzamos feldolgozásához új Isolates jönnek létre, amelyek között üzenetcsere történik.

Példa egy Isolate létrehozására:

import 'dart:isolate';

void task(SendPort sendPort) {
  // Egy nehéz feladat
  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('Eredmény: $message');
    receivePort.close();
  });
}

Így Dartban párhuzamos feldolgozást lehet alkalmazni az Isolates segítségével, ami hatékony CPU-intenzív feladatok esetén.