名为 runtime.gopark 的 goroutine 是什么?

What is the goroutine named runtime.gopark?

我正在通过 Goland 调试一个用 go 编写的程序。在调试器中,我可以在 运行 的不同 goroutine 之间进行选择。我发现在我的 goroutines 旁边还有很多名为 runtime.gopark 的其他 goroutines,我怀疑这些是线程池中等待作业的其他线程。但是,我在网上找不到任何答案。是这样吗?如果不是,它实际上在做什么?

P.S。这是事件的照片:

协程没有命名。 "runtime.gopark" 是调试器停止进程并获取代码执行快照时执行的 package/function。

特别是 "runtime.gopark",这意味着 goroutine 暂时 "on hold",由运行时调度程序暂停。

如果您想更好地了解应用程序并为 goroutine 命名,则可以使用 IDE 的最新版本,如 2020.1.2(或更新版本),并对代码进行注释就像描述的那样 in this article.