我正在測試我的 Go 應用程序?,F在我正在獲取一些信息,但我想知道如何知道處于可運行狀態的 goroutinesNumGoroutine()的確切數量(給定某個時間點):包的函數runtime返回當前存在的 goroutines 的數量(很多比那些處于可運行狀態的還要多?。?。這是我的函數,它每秒打印一次 goroutine 編號:func count() { for { fmt.Println("Number of runnable goroutines: ", runtime.NumGoroutine()) time.Sleep(1 * time.Second) }}不幸的是,結果并不好(程序中的 goroutine 數量不斷增長,我知道這么多 goroutine 不可能同時處于活動狀態!)。此頁面:https ://golang.org/doc/diagnostics.html表示debug.Stack 返回當前堆棧跟蹤。堆棧跟蹤有助于查看當前正在運行的 goroutine 數量、它們在做什么以及它們是否被阻塞。如果我打印debug.Stack()(而不是 runtime.NumGoroutine()),結果會完全改變(每秒它總是打印相同的堆棧?。?。我的問題是:處于可運行len(debug.Stack())狀態的 goroutine 數量是否正確?在我看來不是,因為這個數字是恒定的。我如何獲得正確的信息?
1 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
我不建議使用這種方式(因為這就是它在運行時內部的工作方式,并且將來可能會更改),但在測試目的中會很好: https: //play.golang.org/p/6gi26PF3iTT
如您所見,運行狀態和可運行狀態是不同的狀態。
- 1 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消