typestar

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

  1. Envío y recepción se encuentran; ninguno avanza solo.
  2. Un envío sin receptor produce deadlock, que el runtime detecta.
  3. Esa sincronización es el objetivo, no una limitación.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 4 en Canales; paso 4 de 25 en Concurrencia.

← Anterior Siguiente →