runtime: copy more of scheduler from Go 1.7 runtime
This started by moving procresize from C to Go so that we can pass the right type to the memory allocator when allocating a p, which forced the gomaxprocs variable to move from C to Go, and everything else followed from that. Reviewed-on: https://go-review.googlesource.com/34916 From-SVN: r244236
This commit is contained in:
parent
d1261ac6eb
commit
2193ad7fbf
16 changed files with 1997 additions and 1542 deletions
|
@ -14,7 +14,25 @@ import (
|
|||
// change the current setting.
|
||||
// The number of logical CPUs on the local machine can be queried with NumCPU.
|
||||
// This call will go away when the scheduler improves.
|
||||
func GOMAXPROCS(n int) int
|
||||
func GOMAXPROCS(n int) int {
|
||||
if n > _MaxGomaxprocs {
|
||||
n = _MaxGomaxprocs
|
||||
}
|
||||
lock(&sched.lock)
|
||||
ret := int(gomaxprocs)
|
||||
unlock(&sched.lock)
|
||||
if n <= 0 || n == ret {
|
||||
return ret
|
||||
}
|
||||
|
||||
stopTheWorld("GOMAXPROCS")
|
||||
|
||||
// newprocs will be processed by startTheWorld
|
||||
newprocs = int32(n)
|
||||
|
||||
startTheWorld()
|
||||
return ret
|
||||
}
|
||||
|
||||
// NumCPU returns the number of logical CPUs usable by the current process.
|
||||
//
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue