文章目錄
- 簡介
- 生産者消費者模型
簡介
并發不是并行,并發更多是關注程式設計層面的,并行是程式運作層面的。另外需要注意的是 golang 中對于無緩沖的 channel 在接收到一個資料時候就會直接陷入阻塞但是對于有緩沖的 channel,在 channel 滿載後再有一個數進入才會陷入阻塞
生産者消費者模型
// Producer 生産者
func Producer(line chan<- int) {
for {
line <- 1
}
}
// Consumer 消費者
func Consumer(line <-chan int) {
for n := range line {
fmt.Println("消費: ", n)
}
}
// 生産者消費者模型
func main() {
// 生産線
line := make(chan int, 50)
// 生産者 1
go Producer(line)
// 生産者 2
go Producer(line)
// 消費者
go Consumer(line)
// 主攜程等待 1000ms 後結束
time.Sleep(1 * time.Millisecond)
}