gpt4 book ai didi

go - 当 main 退出时,goroutines 会运行 defer() 吗?

转载 作者:行者123 更新时间:2023-12-02 18:30:17 25 4
gpt4 key购买 nike

如果我有一个 Goroutine,我可以使用类似的方法关闭在该 Goroutine 上打开的 channel 吗?

defer(close())

或者当 main 退出时,是否不会为 goroutine 运行 defer 语句?

最佳答案

不,你不能。一旦main完成,整个程序就会终止。因此,如果确实需要的话,您必须手动同步优雅终止。有整齐的图案,但那是另一回事了。

但似乎您根本不​​需要关闭。保持 channel 打开是可以的,它们是完全托管的资源,最终会被垃圾收集。关闭更多的是一种设计/意图行为,而不是必要的清理。

附注如果您在 main 级别defer Something(),那么 something 确实会在 main 返回后执行。您可能会依赖此行为。

关于go - 当 main 退出时,goroutines 会运行 defer() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com