mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2009 The Go Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package runtime
 | 
						|
 | 
						|
import (
 | 
						|
	"runtime/internal/atomic"
 | 
						|
	"unsafe"
 | 
						|
)
 | 
						|
 | 
						|
// GOMAXPROCS sets the maximum number of CPUs that can be executing
 | 
						|
// simultaneously and returns the previous setting. If n < 1, it does not
 | 
						|
// 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 {
 | 
						|
	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.
 | 
						|
//
 | 
						|
// The set of available CPUs is checked by querying the operating system
 | 
						|
// at process startup. Changes to operating system CPU allocation after
 | 
						|
// process startup are not reflected.
 | 
						|
func NumCPU() int
 | 
						|
 | 
						|
// NumCgoCall returns the number of cgo calls made by the current process.
 | 
						|
func NumCgoCall() int64 {
 | 
						|
	var n int64
 | 
						|
	for mp := (*m)(atomic.Loadp(unsafe.Pointer(&allm))); mp != nil; mp = mp.alllink {
 | 
						|
		n += int64(mp.ncgocall)
 | 
						|
	}
 | 
						|
	return n
 | 
						|
}
 | 
						|
 | 
						|
// NumGoroutine returns the number of goroutines that currently exist.
 | 
						|
func NumGoroutine() int {
 | 
						|
	return int(gcount())
 | 
						|
}
 | 
						|
 | 
						|
// Get field tracking information.  Only fields with a tag go:"track"
 | 
						|
// are tracked.  This function will add every such field that is
 | 
						|
// referenced to the map.  The keys in the map will be
 | 
						|
// PkgPath.Name.FieldName.  The value will be true for each field
 | 
						|
// added.
 | 
						|
func Fieldtrack(map[string]bool)
 |