为了澄清有关 goroutine 的误解,一位用户转向了 Go Playground并执行以下代码:
<code class="go">package main import ( "fmt" ) func other(done chan bool) { done <- true go func() { for { fmt.Println("Here") } }() } func main() { fmt.Println("Hello, playground") done := make(chan bool) go other(done) <-done fmt.Println("Finished.") }</code>
Go Playground:
本地执行:
产生的输出几乎立即:
Hello, playground. Finished.
Go Playground:
本地执行:
请注意,Go Playground 目前使用输出的缓存版本,因此后续运行可能无法准确反映实际执行情况。
了解 GOMAXPROCS 对 goroutine 执行的影响对于设计至关重要适当的并发模型。 Go Playground 上的默认设置可能并不总是模仿本地机器的行为,这凸显了在不同配置下进行测试的重要性。
以上是为什么 Go Goroutine 的行为在 Playground 和本地执行之间有所不同?的详细内容。更多信息请关注PHP中文网其他相关文章!