go - 停止计时器会结束 goroutine 吗?
问题描述
像下面这样通过停止计时器停止的简单 goroutine 是否变得干净?还是留在内存中直到程序结束?
go func() {
<-timer1.C //Will stop before firing.
fmt.Println("Timer 1 fired")
}()
解决方案
如果通道关闭,Go 例程将退出。如果通道保持打开但没有发送任何内容,那么 Go 例程将永远“挂起”,直到程序退出。
如果timer1
是 a time.Timer
,则Stop
不会关闭通道,如文档中所述:https ://pkg.go.dev/time#Timer.Stop
推荐阅读
- visual-studio-code - Linux Mint 上的 VSCode,集成终端无法输入任何内容
- stack-overflow - 我们可以使用空手道工具自动化 Windows 服务吗?
- python - 如何将值从另一个数据帧映射到另一个数据帧的标头
- scala - 如何获取在 GROUP BY 子句中分组的元素的 Seq?
- reactjs - 在 react-native 中用 createStructuredSelector 替换 useSelector
- java - Eclipse:使用 Coverage 进行测试会抛出 java.lang.instrument.IllegalClassFormatException
- ios - Swift右栏按钮项目填充问题?
- karate - 是否可以使用命令行覆盖在 Runner.path() 中声明的类路径?
- android - 如何触发深度链接?
- python - pygame游戏中的高分