활성 고루틴 수를 계산하고 표시하는 방법
프로그램에서 동시에 활성화된 고루틴 수를 모니터링하고 싶습니다. 대기열에서 빼기 및 대기열에 넣기. 대기열 관리를 위한 코드를 제공하면서 현재 활성 고루틴 수를 검색하는 방법에 대해 문의하셨습니다.
다음은 WaitGroup을 사용하여 수정된 코드 버전입니다.
import ( "fmt" "sync" ) var element int func deen(wg *sync.WaitGroup, queue chan int) { for element := range queue { wg.Done() // Decrement the WaitGroup count upon completion fmt.Println("element is", element) if element%2 == 0 { fmt.Println("new element is", element) wg.Add(2) // Increment WaitGroup count for spawned goroutines queue <- (element*100 + 11) queue <- (element*100 + 33) } } } func main() { var wg sync.WaitGroup queue := make(chan int, 10) queue <- 1 queue <- 2 queue <- 3 queue <- 0 fmt.Println("initial active goroutines:", runtime.NumGoroutine()) for i := 0; i < 4; i++ { wg.Add(1) // Increment WaitGroup count for each spawned goroutine go deen(&wg, queue) } wg.Wait() // Wait for all goroutines to complete close(queue) fmt.Println("final active goroutines:", runtime.NumGoroutine()) fmt.Println("list length:", len(queue)) // Expect 0 }
위 내용은 동시 Go 프로그램에서 활성 고루틴을 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!