【发布时间】:2019-01-16 23:54:05
【问题描述】:
我有两种算法用于同一任务,一种最适合某些情况,另一种适合其他情况。
所以我想在处理任务时同时启动两个goroutine,并且只使用第一个完成的goroutine返回的结果。
另外,在结果中,我需要知道它是由哪个算法返回的。如果我认为第一个返回的结果不对,我想等待第二个结果。
我阅读了https://golang.org/pkg/sync/ 的文档,似乎只能等待所有goroutine完成。
如何在 golang 中实现这个想法?
【问题讨论】:
-
让他们都将结果写入同一个通道,并使用一个例行读取结果。它们会按照在频道上发送的顺序出现。
-
我会推荐那篇文章blog.golang.org/pipelines。我想里面有你需要的一切。