アクティブな goroutine の数をカウントして表示する方法
プログラム内で、現在アクティブな goroutine の数を同時に監視したいとします。キューのデキューとエンキュー。キューを管理するコードを提供しましたが、アクティブな goroutine の現在の数を取得するメソッドについて問い合わせました。
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 プログラムでアクティブな Goroutine を正確にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。