diff options
Diffstat (limited to 'src/pkg/runtime/debug/garbage.go')
| -rw-r--r-- | src/pkg/runtime/debug/garbage.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/pkg/runtime/debug/garbage.go b/src/pkg/runtime/debug/garbage.go index 3658feaaf8..8337d5d5b3 100644 --- a/src/pkg/runtime/debug/garbage.go +++ b/src/pkg/runtime/debug/garbage.go @@ -25,6 +25,7 @@ func enableGC(bool) bool func setGCPercent(int) int func freeOSMemory() func setMaxStack(int) int +func setMaxThreads(int) int // ReadGCStats reads statistics about garbage collection into stats. // The number of entries in the pause history is system-dependent; @@ -114,3 +115,21 @@ func FreeOSMemory() { func SetMaxStack(bytes int) int { return setMaxStack(bytes) } + +// SetMaxThreads sets the maximum number of operating system +// threads that the Go program can use. If it attempts to use more than +// this many, the program crashes. +// SetMaxThreads returns the previous setting. +// The initial setting is 10,000 threads. +// +// The limit controls the number of operating system threads, not the number +// of goroutines. A Go program creates a new thread only when a goroutine +// is ready to run but all the existing threads are blocked in system calls, cgo calls, +// or are locked to other goroutines due to use of runtime.LockOSThread. +// +// SetMaxThreads is useful mainly for limiting the damage done by +// programs that create an unbounded number of threads. The idea is +// to take down the program before it takes down the operating system. +func SetMaxThreads(threads int) int { + return setMaxThreads(threads) +} |
