这段 go 代码如何理解

2019-04-25 17:48:00 +08:00
 thomaswang
for i := 0; i < 10; i++ {
	go func() {
		fmt.Println("i: ", i)
		wg.Done()
	}()
}

这个新开的 goroutein 应该是一个新的函数栈吧, 为什么它可以拿到 i 呢,

2719 次点击
所在节点    问与答
21 条回复
mengzhuo
2019-04-30 11:34:57 +08:00
@thomaswang
注意: 这是*并发*,不是*并行*
调度顺序没办法预测的

调度器会在寻找可执行的 goroutine 时,M 会先在 local queue 找(也就是同一个 thread 上),也会随机偷 global queue 里等待执行的 goroutine

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX