Files
gocryptotrader/utils/utils.go
Adrian Gallagher 2a13551dd1 Minor QA changes
1) Add ability to enable all pairs using the new pair manager
2) Add abiity to enable/disable database subsystem via gRPC
3) Fix spelling mistakes
2019-10-04 19:31:04 +10:00

49 lines
1.1 KiB
Go

package utils
import (
"errors"
"path/filepath"
"runtime"
)
const (
defaultTLSDir = "tls"
)
// Util vars
var (
ErrGoMaxProcsFailure = errors.New("failed to set GOMAXPROCS")
)
// AdjustGoMaxProcs sets the runtime GOMAXPROCS val
// Since Go 1.5, Go will use the total number of logical processors that the
// system has available. Caveats to this are if someone has set the GOMAXPROCS
// env var set or wish to limit usage of the number of logical processors
// between a range from 1 to NumCPUs
func AdjustGoMaxProcs(procs int) error {
// Check for default settings, plus respecting GOMAXPROCS env but
// don't allow for values which will cause thread contention
n := runtime.NumCPU()
if procs == runtime.GOMAXPROCS(-1) {
if procs <= n {
return nil
}
}
// Sanitise the procs value (defaults to NumCPUs)
if procs < 1 || procs > n {
procs = n
}
runtime.GOMAXPROCS(procs)
if i := runtime.GOMAXPROCS(procs); i != procs {
return ErrGoMaxProcsFailure
}
return nil
}
// GetTLSDir returns the default TLS dir
func GetTLSDir(dir string) string {
return filepath.Join(dir, defaultTLSDir)
}