go语言GMP模式介绍以及协程案例展示
package main
import (
"fmt"
"runtime"
)
func printNumbers() {
for i := 1; i <= 3; i++ {
fmt.Println(i)
}
}
func printLetters() {
for i := 'a'; i <= 'c'; i++ {
fmt.Println(string(i))
}
}
func main() {
// 设置P的数量为3
runtime.GOMAXPROCS(3)
// 启动两个并发的goroutine
go printNumbers()
go printLetters()
// 主goroutine等待其他goroutine运行完成
runtime.Gosched()
}
这段代码首先设置了运行时的P的数量为3,然后启动了两个并发的goroutine分别打印数字和字母。最后,通过调用runtime.Gosched()
来让当前运行的goroutine主动放弃CPU控制权,让调度器安排其他goroutine运行。这样做可以提高goroutine的并发执行机会,更好地演示GMP模型的运行过程。
评论已关闭