큐에서 요소를 제거하고 추가하여 올바른 수의 고루틴이 작동하도록 하는 함수를 만들었습니다. 요소가 포함되어 있는 한 대기열. 그러나 현재 활성화된 고루틴 수를 표시하는 방법이 필요합니다.
runtime.NumGoroutine Usage
runtime.NumGoroutine 함수는 실행 중인 고루틴 수를 제공할 수 있습니다. 프로그램에서는 문제에 다르게 접근하는 것이 중요합니다. 이는 중첩 루프로 인해 루프가 지속적으로 고루틴을 생성하고 CPU 사이클을 낭비하기 때문입니다.
대체 접근 방식: Sync.WaitGroup
더 효과적인 솔루션은 다음을 활용하는 것입니다. sync.WaitGroup. 다음과 같이 코드를 수정합니다.
func deen(wg *sync.WaitGroup, queue chan int) { for element := range queue { fmt.Println("element is ", element) if element%2 == 0 { fmt.Println("new element is ", element) wg.Add(2) queue <- (element * 100 + 11) queue <- (element * 100 + 33) } wg.Done() } } func main() { var wg sync.WaitGroup queue := make(chan int, 10) queue <- 1 queue <- 2 queue <- 3 queue <- 0 for i := 0; i < 4; i++ { wg.Add(1) go deen(&wg, queue) } wg.Wait() close(queue) fmt.Println("list len", len(queue)) // this must be 0 }
이 수정된 코드에서:
위 내용은 My Go 프로그램에서 활성 고루틴 수를 정확하게 계산하고 표시하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!