Я пытался проверить, как Go будет работать с 100 000 горутин. Я написал простую программу для порождения такого количества подпрограмм, которые ничего не делают, кроме вывода объявлений. Я ограничил размер MaxStack всего 512 байтами. Но я заметил, что размер программы при этом не уменьшается. Он потреблял около 460 МБ памяти и, следовательно, около 4 КБ на горутину. Мой вопрос: можем ли мы установить максимальный размер стека ниже «минимального» размера стека (который может составлять 4 КБ) для горутин. Как мы можем установить минимальный размер стека, с которого начинается Горутина? Ниже приведен пример кода, который я использовал для теста:
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)
}