如何統計並顯示活躍Goroutines 的數量
在你的程式中,你想同時監控當前Goroutines 的數量使隊列出隊和入隊。當您提供了用於管理佇列的程式碼時,您已經查詢了一種檢索目前活動 Goroutines 數量的方法。
這是使用 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程式中活躍的goroutines?的詳細內容。更多資訊請關注PHP中文網其他相關文章!