Go Goroutine的组成部分主要有以下三个:
-
进程栈:每个Go Goroutine都拥有自己的栈空间,用于存储函数调用的临时数据和变量。
-
Goroutine自身:每个Go Goroutine都是一个独立的执行体,由Go runtime管理。
-
Goroutine调度器:Go runtime中的调度器负责管理和调度所有的Go Goroutine,将它们分配到可用的系统线程上,以便并发执行。调度器使用一种非抢占式的调度策略,即进程自愿交出CPU控制权,而不是强制抢占CPU。这样可以减少上下文切换的开销,提高并发效率。