草庐IT

go channel多路复用

1.为什么需要多路复用Go程序在并发处理一些任务的时,会为每一个任务创建一个goroutine,然后需要根据不同的goroutine的返回的结果做不同的处理。如果按照通常的做法,分别获取每个channel的结果:taskCh1:=make(chanbool)taskCh2:=make(chanbool)taskCh3:=make(chanbool)gorun(taskCh1)gorun(taskCh2)gorun(taskCh3)for{//接收通道1的结果result1:=然后再根据不同goroutine返回的结果做后续的处理,这个代码有个问题,需要等待所有的goroutine都执行完成之后

go channel多路复用

1.为什么需要多路复用Go程序在并发处理一些任务的时,会为每一个任务创建一个goroutine,然后需要根据不同的goroutine的返回的结果做不同的处理。如果按照通常的做法,分别获取每个channel的结果:taskCh1:=make(chanbool)taskCh2:=make(chanbool)taskCh3:=make(chanbool)gorun(taskCh1)gorun(taskCh2)gorun(taskCh3)for{//接收通道1的结果result1:=然后再根据不同goroutine返回的结果做后续的处理,这个代码有个问题,需要等待所有的goroutine都执行完成之后