栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

主要功能是goroutine吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

主要功能是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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号