package main
import (
//"time"
"runtime"
"fmt"
)
func main() {
//time.Sleep(100 * time.Millisecond)//By adding this number of goroutine increases
fmt.Println(runtime.NumGoroutine())
}
我试图找出程序中的goroutines数量。我的code is here。编码时我注意到默认的goroutines数是4。
对我来说:
其他人是什么?
通过添加 time.Sleep (上图),goroutines的数量增加到5.这是什么原因?
答案 0 :(得分:5)
实际上,内存管理需要多个goroutine ......
4个最初的goroutines是:
然后,调用time.Sleep函数。它需要一个计时器。定时器在运行时通过附加的goroutine(timerproc)实现,后者处理存储在计时器堆中的事件。当第一个计时器添加到堆中时,这个goroutine会延迟启动。
因此,你最终获得5个goroutines。