前进!前进!!不择手段的前进!

golang实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main

import (
	"fmt"

	"sync"
)

func gen(ch chan int) {

	for i := 1; i < 10; i++ {
		fmt.Println("gen", i)
		ch <- i
	}

	close(ch)

}
func cus(ch chan int, wg *sync.WaitGroup) {
	for i := range ch {
		fmt.Println("      cus", i)
	}
	wg.Done()
	fmt.Println("close")

}
func main() {
	ch := make(chan int, 3)

	wgc := sync.WaitGroup{}
	go gen(ch)
	for i := 1; i <= 2; i++ {

		go cus(ch, &wgc)

		wgc.Add(1)
	}
	wgc.Wait()

}

  • 单生产者,多消费者