首页 > 其他 > 详细

Go_runtime包

时间:2020-02-02 13:57:18      阅读:74      评论:0      收藏:0      [点我收藏+]
package main

import (
	"fmt"
	"runtime"
	"time"
)

//写在init函数里,main函数运行之前就先设置cpu
func init() {
	//获取逻辑cpu的数量
	fmt.Println("逻辑CPU的数量-->", runtime.NumCPU()) //逻辑CPU的数量--> 12

	//设置go程序执行的最大的cpu的数量:数值在[1,256]
	n := runtime.GOMAXPROCS(runtime.NumCPU())
	fmt.Println(n) //12
}
func main() {
	//获取goroot目录
	fmt.Println("GOROOT-->", runtime.GOROOT()) //C:\Go
	//获取操作系统
	fmt.Println("os/platform-->", runtime.GOOS) //dos/platform--> windows

	//gosched 让当前线程让出 `cpu` 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行
	go func(){
		for i:=0;i<5;i++{
			fmt.Println("goroutine...")
		}
	}()
	for i:=0;i<4;i++{
		//让出时间片,先让别的goroutine执行
		runtime.Gosched()
		fmt.Println("main...")
	}

	//创建goroutine
	go func() {
		fmt.Println("goroutine开始。。")
		//调用fun
		fun()
		fmt.Println("goroutine结束。。。")
	}()

	//睡一会儿
	time.Sleep(3 * time.Second)

}

func fun() {
	defer fmt.Println("derfer...")
	//return //终止函数
	runtime.Goexit() //终止当前的goroutine
	fmt.Println("fun函数。。。")
}

  

Go_runtime包

原文:https://www.cnblogs.com/yzg-14/p/12251796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!