【发布时间】:2015-06-30 18:28:00
【问题描述】:
我通过一系列定义来弄清楚缓冲区是如何工作的,但我就是不明白。下面是一个示例,我更改了缓冲区的值,但我不知道它的作用。有人可以根据这个例子向我解释它并提供一些关于它如何/为什么工作的测试用例吗?谢谢。
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
}
【问题讨论】:
-
我不太明白你在问什么。 channel spec 这里有什么不明白的地方吗?特别是关于容量的段落
-
@JimB 我不明白缓冲区部分!这对输出有何影响?!
-
我确实访问过该链接之前并没有真正帮助我
-
有人认为我的问题已经在某处得到了回答,但正如我所说的那样,它非常带来它并没有真正的帮助!!!
-
@Backhand 我写了几个例子,应该有助于澄清你的理解。如果仍然没有意义,请告诉我,我会尝试制作另一个演示。
标签: go