Goのスレッドスタックスサイズの調整方法

Go言語ではデフォルトでGoスレッドごとのスタックサイズは2KBですが、場合によっては特定のニーズに合わせてスタックサイズを調整する必要があるかもしれません。

Go言語ではランタイムパッケージのGOMAXPROCS関数で、各Goスレッドで利用可能なスタックの最大サイズを取得したり設定したりできます。関数の使い方は次のとおりです。

import "runtime"

func main() {
    // 获取当前Go线程的最大堆栈大小
    stackSize := runtime.GOMAXPROCS(0)
    fmt.Printf("当前Go线程的最大堆栈大小:%dKB\n", stackSize/1024)

    // 设置Go线程的最大堆栈大小为4KB
    runtime.GOMAXPROCS(4 * 1024)

    // 获取设置后的Go线程的最大堆栈大小
    stackSize = runtime.GOMAXPROCS(0)
    fmt.Printf("设置后的Go线程的最大堆栈大小:%dKB\n", stackSize/1024)
}

なお、GOMAXPROCS関数の引数の単位はバイトであるため、設定したいスタックサイズをバイト単位に変換する必要があります。また、スタックサイズの調整は性能とメモリ使用量に影響を与える可能性があるため、スタックサイズの設定には注意が必要です。

bannerAds