Jestem nowy w Google Go (Golang). Moje pytanie związane jest z tym postem: What exactly does runtime.Gosched do?. Struktura kodu jest kopiowana poniżej. Moje pytanie brzmi: kiedy zmienię liczbę procesorów w GOMAXPROCS, w jaki sposób mogę sprawdzić, ile procesorów jest uruchomionych. Kiedy robię "top", pokazuje proces a.out, który zużywa 100% lub mniej zasobów, nawet gdy GOMAXPROCS ma więcej niż 1. Byłbym wdzięczny za twoją pomoc.Golang: jak zweryfikować liczbę procesorów, na których działa program Go
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()
}
Na jaki system operacyjny to testujesz? Warto również wiedzieć, z jakiego procesora korzystasz. Nie mogę odtworzyć zachowania. – nemo
cat/etc/* - zwalnia wersję: Red Hat Enterprise Linux Workstation wersja 6.3 (Santiago). System operacyjny to Linux. Procesor to Intel (R) Xeon (R) CPU, X5460 @ 3.16GHz. NumCPU zwraca 8. – user984260
@nemo Program działa idealnie dobrze. Tylko ja byłem ciekawy, jak zobaczyć liczbę procesorów, na których działa – user984260