Concurrencia: hilos y canales
Forja tiene concurrencia inspirada en Go y Rust: hilos ligeros, canales de comunicación, envío/recepción y select para multiplexar canales.
Crear un hilo
🧵 Sintaxis
variable h = hilo {
// código que se ejecuta en otro hilo
retornar resultado
} Canales
📡 canales
variable tx, rx = canal()
hilo {
tx.enviar("hola")
}
variable msg = rx.recibir()
escribir(msg) // → hola Select sobre múltiples canales
📡 seleccionar
seleccionar {
caso rx -> dato -> {
escribir("Recibido: " + dato)
}
tiempo 1000 -> {
escribir("Timeout")
}
otro -> {
escribir("Sin datos")
}
} Esperar y unir hilos
⏳ Espera
variable h = hilo {
esperar(2)
retornar "listo"
}
variable resultado = h.unir()
escribir(resultado) // → listo Keywords de concurrencia
| Keyword | Descripción |
|---|---|
hilo | Lanza un hilo ligero |
canal() | Crea un canal de comunicación |
.enviar(valor) | Envía un dato por el canal |
.recibir() | Recibe un dato del canal |
.unir() | Espera a que el hilo termine |
esperar(ms) | Pausa la ejecución en milisegundos |
seleccionar | Select multiplexado sobre canales |
caso | Brazo de recepción dentro de seleccionar |
tiempo | Timeout en seleccionar |
otro | Caso default en seleccionar |