go语言GMP模式介绍以及协程案例展示
    		       		warning:
    		            这篇文章距离上次修改已过453天,其中的内容可能已经有所变动。
    		        
        		                
                
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模型的运行过程。
评论已关闭