golang_goroutine: runtime包Gosched,Goexit等函数的用法介绍

版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87867418
go程-runtime包
  1. 主go程退出,其它子go程也会退出

  2. runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行。

func main() {

	go func(){
		for i := 0; i < 3; i++{
			fmt.Println("go")
		}
	} ()

	for i := 0; i < 2; i++{
		//runtime.Gosched()  //让出时间片
		fmt.Println("hello")
	}
}

Output:

hello
hello

主线程执行完毕后,子go程还没来及执行

解决方法: 使用runtime.Gosched():

Output:

hello
go
go
go
hello

或者

go
go
go
hello
hello

等等其它结果,可以看出这个情况: 没有channel的存在下,很难确定打印的顺序

  1. runtime.Goexit() 退出所在位置的go程
    扩展: os.exit() 退出进程,给进程分配的空间也会销毁
  2. runtime.GOMAXPROCS()设置cpu的核数,返回先前的设置(一般不用动)
  3. 其它:
    runtime.goroot()获取go的安装目录
    runtime.version()获取版本号
    runtime.NumCPU()获取计算机cpu核数
    runtime.GC() 执行一次垃圾回收

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/87867418
今日推荐