本篇文章向大家介绍《如何统计处于可运行状态的Goroutine数量》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。问题内容我正在测试我的 go 应用程序。现在我得到了一些信息,但我想知道如
本篇文章向大家介绍《如何统计处于可运行状态的Goroutine数量》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。
问题内容我正在测试我的 go 应用程序。现在我得到了一些信息,但我想知道如何知道处于可运行状态的 goroutine 的确切数量(给定某个时刻): numgoroutine()
包的 runtime
函数返回当前存在的 goroutine 数量(比处于可运行状态的 goroutine 数量多得多!)。
这是我的函数,每秒打印 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 数量是否正确?在我看来并非如此,因为这个数字是恒定的。
我如何获得正确的信息?
我不建议使用这种方式(因为这就是它在运行时的工作方式,并且将来可能会改变),但在测试目的中会很好: Https://play.golang.org/p/6gi26PF3iTT
如您所见,正在运行和可运行状态是不同的状态。
以上就是《如何统计处于可运行状态的goroutine数量》的详细内容,更多关于的资料请关注编程网公众号!
--结束END--
本文标题: 如何统计处于可运行状态的goroutine数量
本文链接: https://lsjlt.com/news/596688.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0