Mengesahkan Bilangan Pemproses untuk Program Running Go
Di Golang, fungsi runtime.GOMAXPROCS membolehkan anda menetapkan bilangan maksimum pemproses teras yang tersedia untuk program ini. Walau bagaimanapun, ia mungkin tidak selalu mencerminkan bilangan sebenar pemproses yang digunakan. Artikel ini menerangkan cara untuk mengesahkan bilangan pemproses yang digunakan secara aktif oleh program Go.
Coretan kod yang disediakan, diambil daripada perbincangan tentang masa jalan.Gosched, menunjukkan program Go yang ringkas dengan satu goroutine dan nilai yang berbeza-beza untuk runtime.GOMAXPROCS.
package main import ( "fmt" "runtime" "sync" ) var wg sync.WaitGroup func doTasks() { fmt.Println(" Doing task ") for ji := 1; ji < 100000000; ji++ { for io := 1; io < 10; io++ { //Some computations } } runtime.Gosched() wg.Done() } func main() { wg.Add(1) runtime.GOMAXPROCS(1) // or 2 or 4 go doTasks() doTasks() wg.Wait() }
Untuk mengesahkan bilangan pemproses yang sedang digunakan oleh program, kaedah yang dicadangkan ialah menggunakan fungsi runtime.NumCPU. Fungsi ini mengembalikan jumlah bilangan CPU logik yang tersedia pada sistem, walaupun untuk mesin dengan hyperthreading.
Formula untuk menentukan keselarian maksimum adalah seperti berikut:
func MaxParallelism() int { maxProcs := runtime.GOMAXPROCS(0) numCPU := runtime.NumCPU() if maxProcs < numCPU { return maxProcs } return numCPU }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Bilangan Pemproses yang Digunakan oleh Program Running Go dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!