golang-study/base/channel/oneway/main.go

44 lines
496 B
Go
Raw Normal View History

2021-11-17 22:06:18 +08:00
package main
import (
"fmt"
"sync"
)
var wg = new(sync.WaitGroup)
// 只写 单向通道
func producer(ch chan<- int) {
defer wg.Done()
2021-11-18 00:02:35 +08:00
for i := 0; i < 200; i++ {
2021-11-17 22:06:18 +08:00
ch <- i
}
close(ch)
}
// 只读 单向通道
func consumer(ch <-chan int) {
defer wg.Done()
for i := range ch {
fmt.Printf("%d\n", i)
}
}
func main() {
// 可读可写 双向通道
ch := make(chan int, 10)
2021-11-18 00:02:35 +08:00
wg.Add(1)
2021-11-17 22:06:18 +08:00
go producer(ch)
2021-11-18 00:02:35 +08:00
wg.Add(10)
for i := 0; i < 10; i++ {
go consumer(ch)
}
2021-11-17 22:06:18 +08:00
wg.Wait()
}