What you'll learn:
- Cómo funcionan los isolates en dart
- Cómo usar compute y Isolate spawn
Lo primero es lo primero, todo el mundo debe tener en cuenta que Dart es Single Thread y Flutter depende de Dart.
Dart ejecuta una operación a la vez, una tras otra, lo que significa que mientras se esté ejecutando una operación, ésta no puede ser interrumpida por ningún otro código de Dart.
Un Isolate se refiere a la versión Dart de la noción de Thread, como ya se ha explicado anteriormente.
Sin embargo, hay una gran diferencia con la implementación habitual de “Threads” y es por eso que se denominan “Isolates”.
“Isolates” en Flutter no comparten memoria. La interacción entre los diferentes “Isolates” se realiza a través de “messages” en términos de comunicación.
Cada “Isolate” tiene su propio “Event Loop” y Colas (MicroTask y Event). Esto significa que el código se ejecuta dentro de un Isolate, independientemente de otro Isolate.
Gracias a esto, podemos obtener un procesamiento paralelo.
En este curso aprenderás a utilizar los isolates en tus aplicaciones flutter para procesar tareas pesadas mediante multithreading usando código dart.
Aprenderás qué son los Isolates, cómo funcionan los espacios de memoria en dart, cómo y cuándo usar los isolates en nuestras apps flutter.
All Dart code runs in an isolate, and code can access classes and values only from the same isolate. Different isolates can communicate by sending values through ports (see ReceivePort, SendPort).
An Isolate object is a reference to an isolate, usually different from the current isolate. It represents, and can be used to control, the other isolate.
When spawning a new isolate, the spawning isolate receives an Isolate object representing the new isolate when the spawn operation succeeds.
Isolates run code in its own event loop, and each event may run smaller tasks in a nested microtask queue.
An Isolate object allows other isolates to control the event loop of the isolate that it represents, and to inspect the isolate, for example by pausing the isolate or by getting events when the isolate has an uncaught error.