golang 中有哪些方式阻塞程序?

golang中有哪些阻塞程序的方式?

我只知道
channel 可以进行阻塞,还有哪些方式呢?

阅读 2.7k
3 个回答

还可以使用 select{}, 如下:

package main


func main() {
        // ... 
        select {}
}

如果除过主 goroutine 没有其他 goroutine 运行时,会发生死锁;
select 一般搭配 channel 使用, 可参考 https://draveness.me/golang/d...

time.Sleep

time.NewTimer

sync.WaitGroup

select

区分场景

  • 希望等待所有的goroutine结束而阻塞:waitgroup、errgroup、channel
  • 单纯的想等待:time.Sleep
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题