VladimirAndreev
@VladimirAndreev
php web dev

Как узнать pid процесса, который исполняет goroutine?

Всем привет.
Есть код, который запускает 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)
}


Работает вот так:
5bf47f8c0c374619053680.png

А выдает так:
5bf48085edfb6666855569.png
  • Вопрос задан
  • 571 просмотр
Пригласить эксперта
Ответы на вопрос 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
os.Getpid() из самих горутин вызывай
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы