【发布时间】:2020-07-22 10:06:18
【问题描述】:
官方工具或第三方工具中是否有工具可以让您列出所有正在运行的 goroutine,这些 goroutine 与您的主程序一起运行?
或者类似 Erlang/Elixir 中的观察者?
【问题讨论】:
-
以什么方式列出它们?他们没有名字或身份证。您可以从
runtime.NumGoroutine()获取它们的数量。 -
最接近“列出所有 goroutines”的方法是转储它们的所有堆栈跟踪,如 stackoverflow.com/questions/19094099/… 中所示,但这似乎不是你要找的。span >
-
将它们列为
goroutine 1 <some-timestamp-when-it-started-running>、goroutine 2 ...、goroutine 3 ........ -
您需要自己跟踪;据我所知,Go 不会跟踪每个 goroutine 启动时的时间戳,它对这些信息没有用处。
-
@Adrian:严格来说,Goroutines确实有ID,但是reading them sends you straight to hell。
标签: go