golang控制并发数

golang控制并发数的实现方法很简单,就是使用一个有缓冲的通道来实现。

//控制并发数,免得超负载。每次最多有3个进程(协程)同时执行搜索函数DoSearch
var sem = make(chan bool, 3)

func DoSearch() { // only 3 instances of this function can run
	sem <- true
	defer func() {
		<-sem
	}()
	fmt.Println("处理搜索逻辑中………………")
	time.Sleep(10 * time.Second)
	fmt.Println("搜索完成!!!")
}
func main() {
	for i := 0; i < 5; i++ {
		go test.DoSearch()
	}
	time.Sleep(50 * time.Second)
}

运行结果:每次都是同时运行三个协程。
golang控制并发数_第1张图片

你可能感兴趣的:(golang,golang,开发语言,后端)