gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:33:43 32 4
gpt4 key购买 nike

package main

import (
//"time"
"runtime"
"fmt"
)

func main() {
//time.Sleep(100 * time.Millisecond)//By adding this number of goroutine increases
fmt.Println(runtime.NumGoroutine())
}

我正在尝试找出程序中 goroutine 的数量。我的code is here .在编写代码时,我注意到 goroutines 的默认数量是 4。

对我来说:

  • main 是一个 goroutine
  • 垃圾收集器是一个 goroutine

其他的是什么?

通过添加 time.Sleep(上图),goroutine 的数量增加到 5 个。这是什么原因?

最佳答案

其实内存管理需要不止一个goroutine ...

4 个初始 goroutine 是:

  • 主协程
  • 后台清扫器(并发垃圾收集阶段)
  • 清道夫(也是垃圾收集器的一部分)
  • finalizer goroutine(专门运行 finalizers 最终附加到对象)

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

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

关于go - 一个 Go 程序默认启动了多少个 goroutine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27763501/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com