go常见并发模式(3):优胜劣汰模式

开启一定数量的协程,同时去执行同一个任务,只取最快执行完毕的那一个

// 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)
}

适用于执行一些远程访问,并且远程服务不可控的任务

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容