Sono nuovo a Google Go (Golang). La mia domanda è correlata a questo post What exactly does runtime.Gosched do?. La struttura del codice è copiata di seguito. La mia domanda è che quando cambio il numero di processori in GOMAXPROCS, come posso verificare quanti processori è in esecuzione. Quando faccio 'top', mostra un processo a.out che consuma il 100% o meno di risorse anche quando GOMAXPROCS è superiore a 1. Sarei grato per il tuo aiuto.Golang: come verificare il numero di processori su cui è in esecuzione un programma 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()
}
Quale SO si sta verificando questo? Inoltre sarebbe utile sapere quale CPU si usa. Non riesco a riprodurre il comportamento. – nemo
cat/etc/* - restituzioni di rilascio: versione 6.3 di Red Hat Enterprise Linux Workstation (Santiago). Il sistema operativo è linux. La CPU è CPU Intel (R) Xeon (R), X5460 @ 3,16 GHz. NumCPU restituisce 8. – user984260
@nemo Il programma funziona perfettamente. Solo io ero curioso di vedere il numero di processori su cui è in esecuzione – user984260