我试图检查 Go 将如何使用 100,000 个 goroutines 执行。我编写了一个简单的程序来生成许多例程,这些例程除了打印一些公告之外什么都不做。我将 MaxStack 大小限制为 512 字节。但是我注意到程序大小并没有随之减少。它消耗了大约 460 MB 的内存,因此每个 goroutine 大约消耗 4 KB。我的问题是,我们能否将 goroutine 的最大堆栈大小设置为低于“最小”堆栈大小(可能是 4 KB)。我们如何设置 Goroutine 开始的最小堆栈大小?下面是我用于测试的示例代码:package mainimport "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)}
3 回答
- 3 回答
- 0 关注
- 282 浏览
添加回答
举报
0/150
提交
取消