go - 外部程序能知道go程序中有多少个goroutine吗?
问题描述
我可以通过这个获得价值
"runtime.NumGoroutine()"
..
我可以知道外部程序中的 goroutine 数量吗?
解决方案
也许你可以使用delve
.
go get github.com/derekparker/delve/cmd/dlv
- 运行您的主应用程序
- 找到
$pid
您的主要应用程序 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
东西来控制命令。expect
goroutines
好像有一个xml-rpc之类的api供客户端获取更多信息,你可以看看,我之前没用过这个api。
只是一个想法,仅供参考。
推荐阅读
- angular - 无法让 Angular Google Map AGM 与 Angular 11 一起使用
- ruby-on-rails - attr_accessor 没有从 rails 模型更新值
- f# - 在 F# 中,如何更改记录中属性的属性(语法?)
- python-3.x - 使用自定义正则表达式验证linkedIn url
- android - android.content.ReceiverCallNotAllowedException:BroadcastReceiver组件不允许注册接收intent
- assembly - NASM 基本加法程序给出重定位被截断以适应:R_386_16 针对 `.bss' 错误
- python - 无法定位 Selenium 中真正存在的元素
- php - 1 分钟后无法发送推送通知
- kuzzle - 使用钩子或订阅在 Kuzzle 中发送推送通知的更好方法是什么?
- java - 如何在没有打印语句的情况下扫描多行