版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87867418
go程-runtime包
-
主go程退出,其它子go程也会退出
-
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的存在下,很难确定打印的顺序
- runtime.Goexit() 退出所在位置的go程
扩展: os.exit() 退出进程,给进程分配的空间也会销毁 - runtime.GOMAXPROCS()设置cpu的核数,返回先前的设置(一般不用动)
- 其它:
runtime.goroot()获取go的安装目录
runtime.version()获取版本号
runtime.NumCPU()获取计算机cpu核数
runtime.GC() 执行一次垃圾回收