首页 >后端开发 >Golang >如何让 Go 程序的主 Goroutine 无限期运行?

如何让 Go 程序的主 Goroutine 无限期运行?

Barbara Streisand
Barbara Streisand原创
2024-12-26 21:46:11572浏览

How to Keep a Go Program's Main Goroutine Running Indefinitely?

保持 Go 项目的主 Goroutine 无限期运行

与其他编程语言中的 main 函数不同,Go 的 main Goroutine 在从函数返回时退出。这就提出了一个问题:我们怎样才能让主 Goroutine 无限期地运行?

“休眠” Goroutine

有几种结构可以在不消耗 CPU 资源的情况下阻塞主 Goroutine:

  • 选择不带大小写的语句或默认
  • 从空通道接收
  • 从零通道接收
  • 发送到零通道
  • 锁定锁定的sync.Mutex

退出Goroutine

当需要提供退出方式时,可以使用通道:

  1. 创建一个退出通道: quit := make(chan struct{})
  2. 在 main() 中,阻止退出通道:
  3. 来自另一个goroutine,准备退出时向退出通道发送信号: close(quit)

不阻塞地睡眠

如果我们不想阻塞主 goroutine 但只是阻止它结束,可以使用以下结构:

  • 调用time.Sleep() 具有足够长的持续时间(大约 292 年)
  • 无限循环睡眠: for { time.Sleep(...) }

注意:

关闭退出通道可以随时终止程序,即使其他goroutine 正在运行。这是因为主协程从关闭的通道接收数据后返回,导致程序在非主协程完成之前退出。

以上是如何让 Go 程序的主 Goroutine 无限期运行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn