我有一个昂贵的函数,可以应用于切片的所有项目。我正在使用 goroutines 来处理这个问题,每个 goroutine 处理切片的一项。func Huge(lst []foo) { for _, item := range lst { go performSlow(item) } // How do I synchronize here ? return someValue(lst)}问题是,如评论中所示,在调用someValue函数之前等待所有 goroutine 完成其工作的首选方法是什么?将频道传递给performSlow并等待每个人都写完它可以工作,但这似乎有点过分:func Huge(lst []foo) { ch := make(chan bool) for _, item := range lst { go performSlow(item, ch) // performSlow does its job, then writes a dummy value to ch } for i := range lst { _ = <-ch } return someValue(lst)}有没有更好(即更有效和/或更惯用)的方法来做到这一点?
1 回答
- 1 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消