为了账号安全,请及时绑定邮箱和手机立即绑定

go 同步 goroutine 的首选方式是什么

go 同步 goroutine 的首选方式是什么

Go
跃然一笑 2021-06-29 13:52:32
我有一个昂贵的函数,可以应用于切片的所有项目。我正在使用 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信