有这么一个案例,
有1个加工厂,只能生产不能销售
有1个销售商,只能销售不能生产
(1)为了保证每1个生产的产品都能销售出去,保障零库存
(2)也为了防止加工厂销售,也为了防止销售商生产,那么就需要1个单通道。
1、定义1个双向通道
var ch = make(chan int)
2、定义加工厂
func Factory(f chan<- int) {
for i := 0; i < 10; i++ {
f <- i
fmt.Println("Factory Worked:",i)
time.Sleep(time.Second)
}
close(f)
}
3、定义销售商
func Consumers(c <-chan int) {
for i := range c {
fmt.Println("Consumers Worked:",i)
}
}
4、协调加工厂和销售商进行工作
go Factory(ch)
Consumers(ch)
5、执行情况
6、代码截图
7、源码分享
package main
import (
"fmt"
"time"
)
func Factory(f chan<- int) {
for i := 0; i < 10; i++ {
f <- i
fmt.Println("Factory Worked:",i)
time.Sleep(time.Second)
}
close(f)
}
func Consumers(c <-chan int) {
for i := range c {
fmt.Println("Consumers Worked:",i)
}
}
func main() {
var ch = make(chan int)
go Factory(ch)
Consumers(ch)
}