Canales sin búfer en Go
Un envío sin búfer bloquea hasta que otra goroutine recibe: ese es el apretón de manos.
func handshake() string {
done := make(chan string)
go func() {
done <- "worker finished"
}()
message := <-done // se bloquea hasta que ocurre el envío
return message
}
Cómo funciona
- Envío y recepción se encuentran; ninguno avanza solo.
- Un envío sin receptor produce deadlock, que el runtime detecta.
- Esa sincronización es el objetivo, no una limitación.
Palabras clave y builtins usados aquí
chanfuncgomakereturnstring
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 170
- Tokens
- 32
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 19 segundos.
Paso 1 de 4 en Canales; paso 4 de 25 en Concurrencia.