登录
首页 >  Golang >  Go问答

等待 goroutine 完成的正确方法

来源:Golang技术栈

时间:2023-04-04 16:51:40 435浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《等待 goroutine 完成的正确方法》,以下内容主要包含golang等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我想知道在退出程序之前等待 goroutine 完成的正确方法是什么。阅读其他一些答案,bool chan 似乎可以解决问题,如Playground 链接

func do_stuff(done chan bool) {
    fmt.Println("Doing stuff")
    done 

我在这里有两个问题:

  • 为什么

  • 如果我取消最后一行的注释会发生什么?我有一个死锁错误。这是因为通道是空的并且没有其他函数向它发送值吗?

正确答案

为什么要工作?

  • 它之所以有效,是因为运行时检测到您正在向其他地方的通道写入内容。

如果我取消最后一行的注释会发生什么?

  • 运行时足够聪明,可以知道没有其他内容被写入并且死锁。

奖励,如果您的内存非常有限,您可以使用done := make(chan struct{})and done ,struct{}保证使用 0 内存。

以上就是《等待 goroutine 完成的正确方法》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>