为了账号安全,请及时绑定邮箱和手机立即绑定

Go 程序默认启动了多少个 goroutine?

Go 程序默认启动了多少个 goroutine?

Go
萧十郎 2021-09-10 16:55:31
package mainimport (    //"time"    "runtime"    "fmt")func main() {    //time.Sleep(100 * time.Millisecond)//By adding this number of goroutine increasesfmt.Println(runtime.NumGoroutine())}我试图找出程序中 goroutine 的数量。我的代码在这里。在编码时,我注意到 goroutines 的默认数量是 4。为了我:main 是一个 goroutine垃圾收集器是一个 goroutine其他人是什么?通过添加time.Sleep(上图),goroutines的数量增加到5个,这是什么原因?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

实际上,内存管理需要不止一个 goroutine ...

最初的 4 个 goroutine 是:

  • 主协程

  • 后台清扫器(垃圾收集的并发阶段)

  • 清道夫(也是垃圾收集器的一部分)

  • 终结器 goroutine(专门运行最终附加到对象的终结器

然后,调用 time.Sleep 函数。它需要一个计时器。定时器在运行时通过一个额外的 goroutine (timerproc) 实现,它处理存储在定时器堆中的事件。当第一个计时器添加到堆中时,这个 goroutine 会延迟启动。

因此,您最终获得了 5 个 goroutine。


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信