版权声明:原创勿转
问题
使用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
}