如何统计并显示活跃 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中文网其他相关文章!