大佬教程收集整理的这篇文章主要介绍了记忆 – 一个过程和Golang中的Goroutine一样吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func main() { goRtns := runtime.NumGoroutIne() fmt.Println("goroutInes:",goRtns) }
输出为1.但这是在一个“进程”内,没有明确调用goroutIne:@H_618_10@
“在计算中,进程是正在执行的计算机程序的实例.它包含程序代码及其当前活动.根据操作系统(OS),进程可以由执行的多个执行线程组成同时说明.“@H_618_10@
此外,来自Krishna Sundarram的优秀“How goroutInes work”博客文章:http://blog.nindalf.com/how-goroutines-work/@H_618_10@
“创建一个goroutIne不需要太多内存 – 只有2kB的堆栈空间.它们通过根据需要分配和释放堆存储来增长.”@H_618_10@
我的问题是,然后:正在运行的代码实例(我的简单main.go函数)被运行时库计为goroutIne.我是否假设父进程被视为go例程,具有相同的内存分配,垃圾收集等规则?假设阅读一个关于goroutIne执行的事实类似于运行它的总体进程是否明智?关于上面关于goroutInes的第二个引用,这听起来像一个程序在程序执行时增加/缩小其堆栈空间的过程,这是编程中的标准范例.@H_618_10@
您在这里使用了错误的术语流程.在GO中,一切都是goroutIne.正如Volker所说.你可以从here看到gouroutIne的定义:@H_618_10@
func main() { goRtns := runtime.NumGoroutIne() fmt.Println("goroutInes:",goRtns) }
这只有一个goroutIne,因为它只有主要功能,里面没有去调用这里.它只是打印给定变量的东西.@H_618_10@
另一个例子,如果你在@L_853_11@main中调用了:@H_618_10@
func main() { result := sq(sq(sq(gen(1,2,3,4)))) numGoroutInes := runtime.NumGoroutIne() fmt.Println("number goroutIne = ",numGoroutInes) fmt.Println(<-result) fmt.Println(<-result) fmt.Println(<-result) fmt.Println(<-result) }
你可以找到sq和gen函数here.现在runtime.NumGoroutIne()将有5个goruTine.由于内部函数gen和sq我们已经调用了,我们在这里结合主题总数将是4,主要是最终结果为5.@H_618_10@
以上是大佬教程为你收集整理的记忆 – 一个过程和Golang中的Goroutine一样吗?全部内容,希望文章能够帮你解决记忆 – 一个过程和Golang中的Goroutine一样吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。