Всем привет.
Есть код, который запускает 4 горутины (на машине 2 физических и 4 виртуальных ядра), как узнать ид процесса, который исполняет горутину?
Всего запущено 8 дочерних процессов, 4 из которых занимают около 100% процессора.
там такой код:
package main
import (
"fmt"
"math/rand"
"os"
)
func main() {
source := make(chan string)
items := [...]string{
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "l", "k", "j",
"h", "g", "f", "d", "s", "a", "z", "x", "c", "v", "b", "n", "m",
}
for i := 0; i < 4; i++ {
go func(source <-chan string, i int) {
for {
arg := <-source
abc(arg, i, os.Getpid())
}
}(source, i)
}
for k := 0; k < 1000; k++ {
for _, value := range items {
source <- value
}
}
}
func abc(arg string, i int, pid int) {
for j:=0; j<1000000; j++ {
rnd := rand.Intn(30000)
}
fmt.Printf("[%v][%d] %s\n", pid, i, arg)
}
Работает вот так:
А выдает так: