天天看点

[Go] golang无缓冲通道实现工作池控制并发

展示如何使用无缓冲的通道创建一个goroutine池,控制并发频率

1.无缓冲通道保证了两个goroutine之间的数据交换

2.当所有的goroutine都忙的时候,能够及时通过通道告知调用者

3.无缓冲的通道不会有工作在队列里丢失或卡住

4.创建一个工作池,比如这时候会创建出2个goroutine,被一个无缓冲通道阻塞住,等待在那里,除非通道关闭,在当前的gorotine上会无限循环读取通道,不会退出

5.当有一堆的任务goroutine被发送过来的时候,会先传送给那一个通道,这时候不管有多少个,都会阻塞并等待上面那俩工作完,就起到了控制并发的目的

[Go] golang无缓冲通道实现工作池控制并发