主要功能是goroutine吗?

主要功能是goroutine吗?,第1张

主要功能是goroutine吗?

是的,主要功能在goroutine(主要程序)中运行

根据https://tour.golang.org/concurrency/1

goroutine是Go运行时管理的轻量级线程。

go f(x, y, z)
开始 运行 新的goroutine
f(x, y,z)
。对f,x,y和z的求值发生在 当前goroutine中 ,而执行则
f
发生在 新的goroutine中
Goroutine在相同的地址空间中运行,因此必须同步访问共享内存。同步包提供了有用的原语,尽管您在Go中不需要太多,因为还有其他原语。

因此,根据此官方文档,

main
可以在 当前goroutine中 运行。


现在让我们玩些乐趣

main
并运行它(因此, 当前的goroutine 运行 新的goroutine ),因此,在这里,我们有
多个goroutine 可以
main()
再次执行!(注意:对共享内存的访问必须同步):

package mainimport (    "fmt"    "time")var i = 3func main() {    if i <= 0 {        return    }    i--    fmt.Println("Hi")    go main()    time.Sleep(100 * time.Millisecond)}

输出:

HiHiHi

让我们使用

main()
一个goroutine- 无需同步)来计算阶乘

package mainimport "fmt"func main() {    if f <= 0 {        fmt.Println(acc)        return    }    acc *= f    f--    main()}var f = 5var acc = 1

输出:

120

注意:上面的代码仅用于清楚地表达我的观点,不适用于生产(使用全局变量不应该是首选)。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5086744.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存