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。
- 1 回答
- 0 关注
- 227 浏览
添加回答
举报
0/150
提交
取消