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.