首页 > 解决方案 > main 函数是作为 goroutine 运行的吗?

问题描述

main()函数是否作为 goroutine 运行?例如,我看到了一个像下面这样的崩溃堆栈跟踪,这让我问:

goroutine 1 [running]: main.binarySearch(0x0, 0x61, 0x43,
0xc420043e70, 0x19, 0x19, 0x10)
     /home/---/go/src/github.com/----/sumnum.go:22 +0x80 main.main()
     /home/---/go/src/github.com/---/sumnum.go:13 +0xc1 exit status 2

标签: go

解决方案


main 函数是 goroutine 吗?

不。

主要功能是一个功能。

相比之下,

goroutine是一个轻量级的执行线程。(来源)。

所以goroutines执行函数,但是goroutines不是函数,goroutines和函数之间也没有1对1的关系。

然而...

main()函数在第一个(并且仅在启动时)goroutine 中执行,goroutine #1.

但是一旦那个函数调用了另一个函数,那么主 goroutine 就不再执行主函数,而是执行其他一些函数。

所以很明显,goroutine 和函数是完全不同的实体。

不要将 goroutine 与函数混为一谈!!

函数和 goroutine 是完全不同的概念。将它们视为同一事物会导致无数的困惑和问题。


推荐阅读