Golang - Was ist Kanalpuffergröße?
Ich versuche zu schaffen, einen asynchronen Kanal, und ich habe auf der Suche bei http://golang.org/ref/spec#Making_slices_maps_and_channels.
c := make(chan int, 10) //channel with a buffer size of 10
Was bedeutet es, dass der Puffer ist 10? Was genau hat die Größe des Puffers stellen/zu begrenzen?
InformationsquelleAutor der Frage Tech163 | 2012-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Größe des Puffers ist die Anzahl der Elemente, die gesendet werden können, um den Kanal ohne das senden blockiert. Standardmäßig wird ein Kanal hat eine Puffergröße von 0 (Sie erhalten diese mit
make(chan int)
). Dies bedeutet, dass jede einzelne send blockiert, bis ein anderer goroutine erhält aus dem Kanal. Ein Kanal des Puffers der Größe 1 können halten Sie 1 element, bis das senden blockiert, so dass Sie bekommen würde,InformationsquelleAutor der Antwort Kevin Ballard
Der folgende code veranschaulicht die Sperrung von ungepufferter Kanal:
Können Sie spielen mit dem code hier.
InformationsquelleAutor der Antwort Vladimir Bauer