Google Go (Golang) uygulamasında yeniyim. Soruma bu yazı What exactly does runtime.Gosched do? ile ilgilidir. Kodun yapısı aşağıda kopyalanmıştır. Sorum şu: GOMAXPROCS'deki işlemci sayısını değiştirdiğimde, kaç işlemcinin çalıştığını nasıl doğrularım. 'Top' yaptığımda, GOMAXPROCS 1'den fazla olduğunda bile% 100 veya daha az kaynak tüketen bir süreç gösterir. Yardımlarınız için minnettar olurum.Golang: Bir Go programının çalıştığı işlemci sayısı nasıl doğrulanır?
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()
}
Hangi işletim sistemini üzerinde test ediyorsunuz? Ayrıca hangi CPU'yu kullandığınızı bilmek faydalı olacaktır. Davranışı yeniden oluşturamıyorum. – nemo
cat/etc/* - sürüm iadeleri: Red Hat Enterprise Linux Workstation sürümü 6.3 (Santiago). İşletim sistemi linux. CPU Intel (R) Xeon (R) CPU, X5460 @ 3.16 GHz'dir. NumCPU 8 döndürür. – user984260
@nemo Program mükemmel çalışır. Sadece – user984260