写点什么

Golang 中 runtime 包的基本使用方式

用户头像
liuzhen007
关注
发布于: 2021 年 05 月 06 日

目录


  • 前言

  • 正文

  • 结尾

前言

Golang 语言中有一个不得不提的工具包——runtime,提到 runtime, 大家可能会想起 java, python 的 runtime 运行时库。 但是 Golang 和它们两个不太一样, java 和 python 的 runtime 是虚拟机, 而 Golang 的 runtime 和用户代码一起编译到一个可执行文件中,一起发布的。


今天,我们就来看看 runtime 包有哪些作用和使用场景。

正文

在 Golang 语言中,runtime 调度器是非常重要的工具。它能够和机器系统进行参数交互,获取系统的配置信息,比如获取操作系统类型(linux、windows、mac OS)、系统 CPU 核数。


具体它都能做些什么呢,我们通过一段代码来看一下。


代码实例:


package main
import ( "fmt", "runtime")
func main() { // 获取当前GOROOT目录 fmt.Println("GOROOT: ", runtime.GOROOT()) // 获取当前操作系统类型 fmt.Println("操作系统: ", runtime.GOOS) // 获取当前逻辑CPU的数量 fmt.Println("逻辑CPU数量: ", runtime.NumCPU())}
复制代码


代码执行结果:


GOROOT: /usr/local/go-1.13.5

操作系统: linux

逻辑 CPU 数量: 2


接下来,我们继续探索 runtime 的用法,它还可以设置 CPU 最大的并发数,具体如何实现呢?在上面代码的基础上,我们继续补充一些内容,来看看这个过程。


修改后的代码实例:


package main
import ( "fmt" "runtime" "time")
func main() { // 获取当前GOROOT目录 fmt.Println("GOROOT: ", runtime.GOROOT()) // 获取当前操作系统类型 fmt.Println("操作系统: ", runtime.GOOS) // 获取当前逻辑CPU的数量 fmt.Println("逻辑CPU数量: ", runtime.NumCPU())
// 设置最大的可同时使用的CPU核数, // 一般在使用之前就将cpu数量设置好, // 所以最好放在init函数内执行 n := runtime.GOMAXPROCS(runtime.NumCPU()) fmt.Println("最大的可同时使用的CPU核数: ", n)
// Goexit方法会终止当前goroutine协程 // 创建一个goroutine go func() { fmt.Println("子协程开始执行...") runtime.Goexit() //终止当前goroutine fmt.Println("子协程执行结束...") }() time.Sleep(3 * time.Second) //主函数休眠3秒,让子协程有充分的时间执行完 fmt.Println("主函数执行完毕")}
复制代码


代码执行结果:


GOROOT: /usr/local/go-1.13.5

操作系统: linux

逻辑 CPU 数量: 2

最大的可同时使用的 CPU 核数: 2

子协程开始执行...

主函数执行完毕

结尾

好了,今天我们对 runtime 的介绍就到这里。runtime 库的更多使用方法也需要我们在具体的项目中去实践。晚安各位。

发布于: 2021 年 05 月 06 日阅读数: 31
用户头像

liuzhen007

关注

敲代码,搞开发。 2021.05.01 加入

本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。 博客主页地址:https://liuzhen.blog.csdn.net 微信公众号:玩转音视频 欢迎交流学习!

评论

发布
暂无评论
Golang中runtime包的基本使用方式