gpt4 book ai didi

go - 什么决定了goroutines的执行顺序?

转载 作者:行者123 更新时间:2023-12-02 11:25:32 27 4
gpt4 key购买 nike

我有这个基本的go程序,可以打印到控制台并调用2个goroutines

package main

import (
"fmt"
"time"
)

func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}

func main() {
f("hello")
go f("foo")
go f("bar")
time.Sleep(time.Second)
}
输出如下-我想知道为什么在“foo”之前打印“bar”-由什么决定goroutine的执行顺序?
hello : 0
hello : 1
hello : 2
bar : 0
bar : 1
bar : 2
foo : 0
foo : 1
foo : 2

最佳答案

您有独立的并发goroutine。没有指定执行顺序,任何不违反The Go Memory Model的有效顺序。
如果您需要特定的命令,则只有明确的同步才能保证(例如互斥体,锁,通信操作等)。
相关问题:
Incorrect synchronization in go lang
Golang needs lock to read an int
Discrepancies between Go Playground and Go on my machine?
How to change external variable's value inside a goroutine closure

关于go - 什么决定了goroutines的执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64189774/

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