Translate

domingo, 20 de octubre de 2019

Channel Buffering en Go


Por defecto, los canales no tienen búfer, lo que significa que solo aceptarán envíos si hay una recepción correspondiente es decir una lista para recibir los valores enviados. Los canales almacenados temporalmente aceptan un número limitado de valores sin un receptor correspondiente para esos valores.

Veamos un ejemplo:

package main

import "fmt"

func main() {
    messages := make(chan string, 2)
    messages <- "buffered"
    messages <- "channel"

    fmt.Println(<-messages)
    fmt.Println(<-messages)
}

$ go run channel-buffering.go
buffered
channel

Aquí hacemos un canal de cadenas que almacenan en búfer hasta 2 valores.

Debido a que este canal está protegido, podemos enviar estos valores al canal sin una recepción concurrente correspondiente.

Más tarde podemos recibir dos valores más.

Dejo link : https://gobyexample.com/channel-buffering