Creación de isolates y paso de mensajes
Comuníquese mediante SendPort y ReceivePort
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. ✅
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
- Por qué isolates en lugar de threads
- Isolate.run para delegar tareas rápidamente
- Creación de isolates y paso de mensajes
- Tareas de cálculo intensivo sin tirones