go并发模式 之 生产者消费者模型 Concurrency Producer and Consumer
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func Producer(factor int, out chan <- int) {
for i := 0; ; i++ {
out <- i*factor
}
}
func Consumer(in <- chan int) {
for v := range in {
fmt.Println(v)
}
}
func main() {
ch := make(chan int, 64)
go Producer(3, ch)
go Producer(5, ch)
go Consumer(ch)
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
fmt.Printf("quit (%v)\n", <-sig)
}