为了账号安全,请及时绑定邮箱和手机立即绑定

使用 goroutine 调用非 goroutine 函数

使用 goroutine 调用非 goroutine 函数

Go
侃侃无极 2021-11-08 19:19:29
我有以下格式的脚本的一部分:func main() {  for i=0;i<1000000;i++ {    go test()  }}func test() {    a := test2()}func test2()(var int) {    //a bunch of operations    return var}我运行了很多迭代,它总是有效。我想知道两个或多个 goroutine 是否有可能同时调用函数“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()}非常感谢!
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

不,您的函数不会崩溃,除非您的代码有问题(即除以零)或您明确调用panic(). 如果它不访问任何字段(或文档未指定它们可以同时调用的方法),那么您的函数是线程安全的

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


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信