Sobes.tech
Junior — Middle

È possibile utilizzare il multithreading in Dart per l'elaborazione parallela dei compiti?

sobes.tech AI

Risposta dell'AI

In Dart, la multitasking viene implementata attraverso il meccanismo degli "Isolates" — thread isolati con memoria propria. Permettono di eseguire compiti in parallelo, ma non condividono direttamente la memoria, prevenendo problemi di sincronizzazione.

Per l'elaborazione parallela di compiti, vengono creati nuovi Isolates, tra cui avviene uno scambio di messaggi.

Esempio di creazione di un Isolate:

import 'dart:isolate';

void task(SendPort sendPort) {
  // Un compito pesante
  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('Risultato: $message');
    receivePort.close();
  });
}

In questo modo, in Dart, è possibile utilizzare l'elaborazione parallela con gli Isolates, che è efficiente per compiti intensivi in CPU.