Dart Academy · Lección

Creación de isolates y paso de mensajes

Comuníquese mediante SendPort y ReceivePort

Lección 3 de 413 pasos

Creación de isolates y paso de mensajes es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.

Control manual

Para workers de larga duración y comunicación frecuente, cree un isolate usted mismo con Isolate.spawn. Así mantiene el control de todo su ciclo de vida.

El punto de entrada

Isolate.spawn necesita una función de nivel superior como punto de entrada, además de un argumento que se le envía al iniciarse.

Isolate.spawn(worker, message);

Conozca ReceivePort

Un ReceivePort es su buzón. Lo escucha para recibir los mensajes que le envían otros isolates. 📥

final port = ReceivePort();
port.listen((msg) => print(msg));

Conozca SendPort

Cada ReceivePort expone un SendPort. Quien tenga ese SendPort puede depositar mensajes en su buzón.

final SendPort tx = port.sendPort;

Transferir un puerto

Para empezar a comunicarse, dé al nuevo isolate un SendPort como argumento de spawn. Así sabrá dónde responder.

Isolate.spawn(worker, port.sendPort);

El worker responde

Dentro del worker, use el SendPort recibido para enviar los resultados al isolate principal.

void worker(SendPort tx) {
  tx.send('done');
}

El protocolo de comunicación

Un patrón habitual es un protocolo de comunicación bidireccional: el worker devuelve primero su propio SendPort para que ambos lados puedan enviarse mensajes.

Solo datos que se pueden enviar

Los mensajes deben poder enviarse: números, cadenas, listas, mapas y SendPorts. Elementos como archivos abiertos o funciones no pueden atravesar el límite.

Leer las respuestas

De vuelta en el isolate principal, la callback de listen de su ReceivePort se ejecuta con cada respuesta. Gestiónelas a medida que lleguen, en orden.

Cerrar el puerto

Cuando haya terminado, llame a port.close(). Un ReceivePort abierto mantiene vivo el programa, así que cerrarlo permite finalizar correctamente.

Detener un isolate

Conserve la referencia al Isolate y llame a isolate.kill() para detener un worker que ya no necesite. Libere sus recursos cuanto antes.

Comprobación rápida

¿En qué puerto debe escuchar para recibir mensajes?

Resumen

Inicie el isolate con Isolate.spawn y pase después un SendPort para que los isolates puedan comunicarse. Envíe solo datos que se puedan enviar y cierre los puertos al terminar. ✅

Gratis para empezar

Aprende Dart con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Creación de isolates y paso de mensajes» es gratis?

Sí — el texto completo de «Creación de isolates y paso de mensajes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Creación de isolates y paso de mensajes»?

Comuníquese mediante SendPort y ReceivePort Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Dart Academy?

No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Creación de isolates y paso de mensajes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Dart Academy?

Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué isolates en lugar de threads
  2. Isolate.run para delegar tareas rápidamente
  3. Creación de isolates y paso de mensajes
  4. Tareas de cálculo intensivo sin tirones
← Volver a Dart Academy