go - 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
解决方案
main 函数是 goroutine 吗?
不。
主要功能是一个功能。
相比之下,
goroutine是一个轻量级的执行线程。(来源)。
所以goroutines执行函数,但是goroutines不是函数,goroutines和函数之间也没有1对1的关系。
然而...
该main()
函数在第一个(并且仅在启动时)goroutine 中执行,goroutine #1
.
但是一旦那个函数调用了另一个函数,那么主 goroutine 就不再执行主函数,而是执行其他一些函数。
所以很明显,goroutine 和函数是完全不同的实体。
不要将 goroutine 与函数混为一谈!!
函数和 goroutine 是完全不同的概念。将它们视为同一事物会导致无数的困惑和问题。
推荐阅读
- javascript - 如何单击第一个按钮,该按钮位于具有跨度类的特定 div 中?(使用JavaScript)
- python - 如何用matplotlib分隔x轴图形中的点?
- optaplanner - PlanningVariable 中的 PlanningVariable
- css - 如何在导航栏中悬停时设置顶线
- html - 将斜体的彩色文本添加到 Highchart 图中
- d3.js - d3Force (d3-force-3d's) forceLink.links() 有什么作用?
- angular-material - 自动完成控件显示 ObjectObject 而不是名称
- python - 运行 jupyter 会产生“ModuleNotFoundError: No module named 'six'”
- php - 主页帮助 laravel
- c# - 无法访问静态变量