golang中最大協程數的限制
golang中有最大協程數的限制嗎?如果有的話,是通過什么參數控制呢?還是通過每個協程占用的資源計算?
通過channel控制協程數的就忽略吧。
以我的理解,計算機資源肯定是有限的,所以goroutine肯定也是有限制的,單純的goroutine,一開始每個占用4K內存,所以這里會受到內存使用量的限制,還有goroutine是通過系統線程來執行的,golang默認最大的線程數是10000個。可以通過https://gowalker.org/runtime/debug#SetMaxThreads
來修改。但要注意線程和goroutine不是一一對應關系,理論上內存足夠大,而且goroutine不是計算密集型的話,可以開啟無限個goroutine。
https://gowalker.org/runtime/debug#SetMaxThreads