【GO】golang 协程初探 ,基于生产者/消费者
package main
import (
"fmt"
"time"
)
func main() {
// 管道 固定5个int
ch := make(chan int, 5)
// 生成者 协程
// 管道只能存5个int, 但是要生产15个int, 这就要等消费者先消费完(未消费前生产会阻塞), 然后生产
go func(ch chan int) {
for i := 0; i < 15; i++ {
ch <- i
fmt.Println("put data: ", i)
}
}(ch)
// 主线程充当消费者, 一直会等待把生产数据全部读完
for {
data := <-ch
fmt.Println("read data: ", data)
time.Sleep(time.Second)
}
}
“年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。”
by. 马尔克斯