开启一定数量的协程,同时去执行同一个任务,只取最快执行完毕的那一个
// job
// 模拟一个耗时任务
func job() int {
rand.Seed(time.Now().Unix())
i := rand.Intn(5)
time.Sleep(time.Second * time.Duration(i))
return i
}
func main() {
c := make(chan int)
for i := 0; i < 5; i++ {
go func() {
c <- job()
}()
}
fmt.Println(<-c)
}
适用于执行一些远程访问,并且远程服务不可控的任务
网友评论