Golang Go语言中 goroutine 是对称协程还是非对称协程?
Golang Go语言中 goroutine 是对称协程还是非对称协程?
最近在研究协程,各位 v2er 能否回答一下,我暂时未 Google 查到。
5 回复
应该算是对称协程,一定不是非对称协程
更多关于Golang Go语言中 goroutine 是对称协程还是非对称协程?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
每次调度都要先切到 g0 的栈。 特别的是,从 g0 的栈切出时,并不保存 g0 的上下文。
goroutine 不是协程
您不能光说一句不是协程就完了哇
在Golang(Go语言)中,goroutine是对称协程。以下是对此观点的详细解释:
- 定义与特点:goroutine是Go语言的一种轻量级线程,由Go语言的运行时调度器管理。每个goroutine都是平等的并发执行单元,没有严格的主从关系。它们可以并发地执行多个函数,且创建、销毁和调度的开销相对较小。
- 调度机制:Go语言的调度器基于M:N模型设计,其中M代表操作系统线程,N代表用户级的goroutine。这种设计使得多个goroutine可以由少量的操作系统线程管理和调度,从而提高了并发处理的效率。
- 对称性:在对称协程模型中,所有协程都是平等的,没有特殊的协程作为主协程或管理者。它们都可以并发地执行,并通过某种机制(如通道)进行通信和同步。在Go语言中,goroutine正是这种对称协程的一个实现,它们之间没有主次之分,都是平等的并发执行单元。
综上所述,Golang Go语言中的goroutine是对称协程。它们由Go语言的运行时调度器管理,可以并发地执行多个函数,并通过通道等机制进行通信和同步。