gpt4 book ai didi

go - goroutine的执行时间点是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:55:21 26 4
gpt4 key购买 nike

我运行以下 Go 代码 10 次:

package main

import (
"fmt"
"time"
)

func main() {
go fmt.Println("Hello")
fmt.Println("World")
time.Sleep(1 * time.Millisecond)
}

输出始终是“World”:

World
Hello

它是否表明 goroutine 将执行直到 main 例程中有一个 block ? goroutine的执行时间点是什么?

最佳答案

What is the execution time point of goroutine?

编译器会在您的程序中看似足够的不同位置插入屈服点。例如,在一些函数调用和看似紧凑的循环中。此外,goroutine 会在阻塞系统调用时产生。因此,当第一个 goroutine 到达 fmt.Println("World") 并进入 write 系统调用时,您的程序可能将执行交给第二个 goroutine。在那之后,不确定性随之而来,因为我们不知道这个系统调用需要多长时间。

然而,这是一个实现细节,您不应该关心它。在谈论并行性时,您拥有的唯一时间保证(即“发生在之前”)是由并发原语提供的,例如标准库的 sync/atomic 包中的那些。

TL;DR:不要依赖屈服点让您的程序正常工作。

关于go - goroutine的执行时间点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com