亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計算處于可運行狀態的 goroutine 的數量

如何計算處于可運行狀態的 goroutine 的數量

Go
開滿天機 2022-04-26 15:43:29
我正在測試我的 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

如您所見,運行狀態和可運行狀態是不同的狀態。


查看完整回答
反對 回復 2022-04-26
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號