gpt4 book ai didi

go - 用 goroutines 调用非 goroutine 函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:44 33 4
gpt4 key购买 nike

我有以下格式的脚本部分:

func main() {
for i=0;i<1000000;i++ {
go test()
}
}
func test() {
a := test2()
}
func test2()(var int) {
//a bunch of operations
return var
}

我运行了很多次迭代,它总是有效。我想知道两个或多个 goroutines 是否有可能同时调用函数“test2()”并导致崩溃?无论如何,以下格式是否比以前的格式更好?

func main() {
for i=0;i<1000000;i++ {
go test()
}
}
func test() {
test2 := func()(var int){
//a bunch of operations
return var
}
a := test2()
}

非常感谢!

最佳答案

不,您的函数不会崩溃,除非您的代码有问题(即被零除)或您显式调用 panic()。如果它不访问任何字段(或文档未指定它们的方法可能会被同时调用),那么您的函数是 thread-safe .

编辑:第一个代码更好。尽管两者的性能应该非常相似,但由于它们运行相同的代码,所以第一个更易于阅读。您的第二个代码块中可能会有小的性能损失,因为您多次定义一个函数,但这可能已被编译器优化掉。

关于go - 用 goroutines 调用非 goroutine 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894299/

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