Go并发GMP调度模型
Go语言的并发模型基于G(goroutine)、M(线程)和P(处理器)三个实体的概念。GMP模型是动态的,其中GMP的数量可以变化。
以下是一个简单的Go代码示例,展示了如何创建goroutine:
package main
import (
"fmt"
"runtime"
)
func hello() {
fmt.Println("Hello world!")
}
func main() {
// 设置CPU核心数
runtime.GOMAXPROCS(1)
// 创建一个goroutine
go hello()
// 等待所有goroutine完成
runtime.Gosched()
fmt.Println("Main goroutine exiting.")
}
在这个例子中,我们首先设置了运行时的CPU核心数为1,然后创建了一个goroutine去执行hello
函数。runtime.Gosched()
用于让当前goroutine让出CPU时间片,以允许其他goroutine运行。主goroutine会在其结束前打印一条信息。
评论已关闭