您的位置 首页 技术

golang 如何开启协程

本质上,goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时…

本质上,goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时。 (推荐学习:go)

会主动把当前 goroutine 的CPU (P) 转让出去,让其他 goroutine 能被调度并执行,也就是 Golang 从语言层面支持了协程。

Golang 的一大特色就是从语言层面原生支持协程,在函数或者方法前面加 go关键字就可创建一个协程。

其他方面的比较

内存消耗方面

每个 goroutine (协程) 默认占用内存远比 Java 、C 的线程少。

goroutine:2KB

线程:8MB

线程和 goroutine 切换调度开销方面

线程/goroutine 切换开销方面,goroutine 远比线程小

线程:涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP…等寄存器的刷新等。

goroutine:只有三个寄存器的值修改 – PC / SP / DX.

我们知道,协程(coroutine)是Go语言中的轻量级线程实现,由Go运行时(runtime)管理。

在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。

先看一下下面的程序代码:

func Add(x, y int) {    z := x + y    fmt.Println(z)}func main() {    for i:=0; i<10; i++ {        go Add(i, i)    }}

执行上面的代码,会发现屏幕什么也没打印出来,程序就退出了。

以上就是golang 如何开启协程的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/21910.html

为您推荐

返回顶部