Programación de dardos: simultaneidad
Concurrencyes la ejecución de varias secuencias de instrucciones al mismo tiempo. Implica realizar más de una tarea simultáneamente.
Usos de dardos Isolatescomo herramienta para realizar trabajos en paralelo. losdart:isolate package es la solución de Dart para tomar código Dart de un solo subproceso y permitir que la aplicación haga un mayor uso del hardware disponible.
Isolates, como sugiere el nombre, son unidades aisladas de código en ejecución. La única forma de enviar datos entre ellos es pasando mensajes, como la forma en que pasa mensajes entre el cliente y el servidor. Unisolate ayuda al programa a aprovechar los microprocesadores multinúcleo listos para usar.
Ejemplo
Tomemos un ejemplo para entender mejor este concepto.
import 'dart:isolate';
void foo(var message){
print('execution from foo ... the message is :${message}');
}
void main(){
Isolate.spawn(foo,'Hello!!');
Isolate.spawn(foo,'Greetings!!');
Isolate.spawn(foo,'Welcome!!');
print('execution from main1');
print('execution from main2');
print('execution from main3');
}
Aquí el spawn método del Isolate la clase facilita la ejecución de una función, foo, en paralelo con el resto de nuestro código. losspawn la función toma dos parámetros -
- la función que se generará, y
- un objeto que se pasará a la función generada.
En caso de que no haya ningún objeto para pasar a la función generada, se le puede pasar un valor NULL.
Las dos funciones (foo and main)puede que no se ejecuten necesariamente en el mismo orden cada vez. No hay garantía de cuándofoo se ejecutará y cuando main()estará ejecutando. La salida será diferente cada vez que ejecute.
Salida 1
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Hello!!
Salida 2
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Welcome!!
execution from foo ... the message is :Hello!!
execution from foo ... the message is :Greetings!!
De los resultados, podemos concluir que el código de Dart puede generar un nuevo isolate de ejecutar código como la forma en que el código Java o C # puede iniciar un nuevo hilo.
Isolates difieren de los hilos en que un isolatetiene su propia memoria. No hay forma de compartir una variable entreisolates—La única forma de comunicarse entre isolates es a través del paso de mensajes.
Note - La salida anterior será diferente para diferentes configuraciones de hardware y sistema operativo.
Aislar v / s futuro
Es importante realizar un trabajo computacional complejo de forma asincrónica para garantizar la capacidad de respuesta de las aplicaciones. Dart Future es un mecanismo para recuperar el valor de una tarea asincrónica después de que se ha completado, mientras Dart Isolates son una herramienta para abstraer el paralelismo e implementarlo de una manera práctica de alto nivel.