作业题如下:
假设存在一个生产者,依次产生数字0到9。存在一个奇数消费者,一个偶数消费者分别使用奇数和偶数,使用Go语言通道实现这个生产者消费者模型的代码如下:
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
func producer(odd chan<- int, even chan<- int) {
defer wg.Done()
for i := 0; i < 10; i++ {
if i%2 == 0 {
even <- i
} else {
odd <- i
}
}
close(odd)
close(even)
}
func oddConsumer(odd <-chan int) {
defer wg.Done()
for {
value, ok := <-odd
if !ok {
fmt.Println("Consumer odd, work done")
return
}
fmt.Printf("Consumer odd, get value %d\n", value)
}
}
func evenConsumer(even <-chan int) {
defer wg.Done()
for {
value, ok := <-ev