热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Golang中的runtime包|Go主题月

Golang中的runtime包|Go主题月-目录前言正文结尾前言Golang语言中有一个不得不提的工具包——runtime,提到runtime,大家可能

目录

  • 前言

  • 正文

  • 结尾

前言

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

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

正文

在 Golang 语言中,runtime调度器是非常重要的工具。

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

代码实例:

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 的用法,在上面代码的基础上,我们继续补充一些内容。

修改后的代码实例:

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 的更多使用方法也需要我们在具体的项目中去实践。晚安各位。


推荐阅读
author-avatar
mobiledu2502877427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有