Golang面试遇到的问题--控制goroutine的并发数量

2019-06-11 10:50:40 浏览数 (2)

版权声明:原创勿转

问题

使用goroutine的时候,如何控制并发的数量。 下面是一个简单的实现思路,用带缓存的channel

code

代码语言:javascript复制
import (
	"fmt"
	"sync"
	"time"
)

var wg sync.WaitGroup

func main() {
	userCount := 10
	ch := make(chan bool, 2)
	for i := 0; i < userCount; i   {
		go Read(ch, i)
	}
	wg.Wait()
}

func Read(ch chan bool, i int) {
	defer wg.Done()
	wg.Add(1)
	ch <- true
	//do some work here
	fmt.Println("i:", i, ":", time.Now().Unix())
	time.Sleep(time.Second)
	<-ch
}

0 人点赞