使用 goroutine 调用非 goroutine 函数

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


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()

}

非常感谢!


侃侃无极
浏览 217回答 1
1回答

沧海一幻觉

不,您的函数不会崩溃,除非您的代码有问题(即除以零)或您明确调用panic().&nbsp;如果它不访问任何字段(或文档未指定它们可以同时调用的方法),那么您的函数是线程安全的。编辑:第一个代码更好。尽管两者应该具有非常相似的性能,但由于它们运行相同的代码,因此第一个更易于阅读。由于您多次定义一个函数,因此第二个代码块中的性能可能会有所下降,但这可能会被编译器优化掉。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go