外部程序能否知道go程序中goroutine的个数?
Can an external program know the number of goroutine in the go program?
我可以通过这个获取值
"runtime.NumGoroutine()"
..
我可以知道外部程序中的goroutines数量吗?
也许你可以使用 delve
。
go get github.com/derekparker/delve/cmd/dlv
- 运行 你的主要应用程序
- 找到您的主要应用
$pid
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。
仅供参考。
我可以通过这个获取值
"runtime.NumGoroutine()"
..
我可以知道外部程序中的goroutines数量吗?
也许你可以使用 delve
。
go get github.com/derekparker/delve/cmd/dlv
- 运行 你的主要应用程序
- 找到您的主要应用
$pid
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。
仅供参考。