284354749 发表于 2018-9-20 11:47:34

go语言之行

另一种情况是P所分配的任务G很快就执行完了(分配不均),这就导致了这个处理器P很忙,但是其他的P还有任务,此时如果global runqueue没有任务G了,那么P不得不从其他的P里拿一些G来执行。一般来说,如果P从其他的P那里要拿任务的话,一般就拿run queue的一半,这就确保了每个OS线程都能充分的使用,如下图:

参考地址:http://morsmachine.dk/go-scheduler
三、使用goroutine

基本使用
  设置goroutine运行的CPU数量,最新版本的go已经默认已经设置了。
  

num := runtime.NumCPU()    //获取主机的逻辑CPU个数  
runtime.GOMAXPROCS(num)    //设置可同时执行的最大CPU数
  

  使用示例
  

package main  

  
import (
  

"fmt"  
"time"
  
)
  

  
func cal(a int , b int ){
  
c := a+b
  
fmt.Printf("%d + %d = %d\n",a,b,c)
  
}
  

  
func main() {
  
for i :=0 ; i
页: [1]
查看完整版本: go语言之行