我經歷了一系列的定義來找出緩衝區是如何工作的,但我只是不明白。下面是一個例子,我改變了緩衝區的值,但我不知道它的作用。有人可以根據這個例子向我解釋它,並提供一些測試案例來說明它的工作方式/原因。謝謝。通道緩衝區如何工作?
package main
import (
"fmt"
"time"
)
func send(out, finish chan bool) {
for i := 0; i < 5; i++ {
out <- true
time.Sleep(1 * time.Second)
fmt.Println("Fin d'une écriture")
}
finish <- true
close(out)
}
func recv(in, finish chan bool) {
for _ = range in {
fmt.Println("Fin d'une lecture")
time.Sleep(10 * time.Second)
}
finish <- true
}
func main() {
chanFoo := make(chan bool, 3)
chanfinish := make(chan bool)
go send(chanFoo, chanfinish)
go recv(chanFoo, chanfinish)
<-chanfinish
<-chanfinish
}
我不太明白你在問什麼。在[頻道規格](http://golang.org/ref/spec#Channel_types)中有沒有你不明白的地方?特別是關於容量的段落 – JimB
@JimB我不理解緩衝區部分!這是如何影響輸出的?! – Backhand
和我確實訪問該鏈接之前,沒有真正幫助我 – Backhand