外部程序能否知道go程序中goroutine的个数?

Can an external program know the number of goroutine in the go program?

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

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

也许你可以使用 delve

  1. go get github.com/derekparker/delve/cmd/dlv
  2. 运行 你的主要应用程序
  3. 找到您的主要应用$pid
  4. dlv attach $pid,然后键入 goroutines 以查看所有 go 例程,如下所示:
C:\work\gowork>dlv attach 5696
Type 'help' for list of commands.
(dlv) goroutines
[5 goroutines]
  Goroutine 1 - User: C:/devsoft/Go/src/runtime/time.go:102 time.Sleep (0x440c3b)
  Goroutine 2 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 3 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
  Goroutine 17 - User: C:/devsoft/Go/src/runtime/proc.go:292 runtime.gopark (0x42a03f)
* Goroutine 19 - User: :0 ??? (0x7fffef855427) (thread 15260)
(dlv)

然后,你的程序需要做的就是控制命令dlv,使用类似expect的东西来控制调试工具输入goroutines命令。

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

仅供参考。