您的位置:首页 > 职场人生

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

2019-05-28 12:42 302 查看
版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/90637142

问题

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

code

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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: