首页 > 解决方案 > 外部程序能知道go程序中有多少个goroutine吗?

问题描述

我可以通过这个获得价值 "runtime.NumGoroutine()"..

我可以知道外部程序中的 goroutine 数量吗?

标签: gogoroutine

解决方案


也许你可以使用delve.

  1. go get github.com/derekparker/delve/cmd/dlv
  2. 运行您的主应用程序
  3. 找到$pid您的主要应用程序
  4. dlv attach $pid,然后键入goroutines以查看所有 go 例程,如下所示:
C:\work\gowork>dlv 附加 5696
键入“帮助”以获取命令列表。
(dlv) 协程
[5个goroutine]
  Goroutine 1 - 用户:C:/devsoft/Go/src/runtime/time.go:102 time.Sleep (0x440c3b)
  Goroutine 2 - 用户:C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 3 - 用户:C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 17 - 用户:C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
* Goroutine 19 - 用户: :0 ??? (0x7ffeff855427) (线程 15260)
(dlv)

然后,您的程序需要做的是使用诸如控制调试工具输入命令之类的dlv东西来控制命令。expectgoroutines

好像有一个xml-rpc之类的api供客户端获取更多信息,你可以看看,我之前没用过这个api。

只是一个想法,仅供参考。


推荐阅读