我试图检查 Go 将如何使用 100,000 个 goroutines 执行。我编写了一个简单的程序来生成许多例程,这些例程除了打印一些公告之外什么都不做。我将 MaxStack 大小限制为 512 字节。但是我注意到程序大小并没有随之减少。它消耗了大约 460 MB 的内存,因此每个 goroutine 大约消耗 4 KB。我的问题是,我们能否将 goroutine 的最大堆栈大小设置为低于“最小”堆栈大小(可能是 4 KB)。我们如何设置 Goroutine 开始的最小堆栈大小?下面是我用于测试的示例代码:
package main
import "fmt"
import "time"
import "runtime/debug"
func main() {
fmt.Printf("%v\n", debug.SetMaxStack(512))
var i int
for i = 0; i < 100000; i++ {
go func(x int) {
for {
time.Sleep(10 * time.Millisecond)
//fmt.Printf("I am %v\n", x)
}
}(i)
}
fmt.Println("Done")
time.Sleep(999999999999)
}
相关分类