广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言入门13之runtime包案例讲解
  • 661
分享到

Go语言入门13之runtime包案例讲解

Goruntime包Goruntime 2023-05-18 08:05:56 661人浏览 独家记忆
摘要

目录Runtime包GoMAXPROCS()Gosched()Goexit()举个栗子Runtime包 GOMAXPROCS() ​ 用来设置可以并行计算的CPU核数最大值,并返回之

Runtime包

GOMAXPROCS()

​ 用来设置可以并行计算的CPU核数最大值,并返回之前的值,具体使用方法上一篇有些,这里不再赘述

Gosched()

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

Goexit()

​ 用于立即中止当前goroutine的运行(中止所在协程),而并不影响其他goroutine。⭐注意!Goexit()在中止当前协程前,还是会运行当前goroutine还没有执行的defer语句,切记,不允许在主函数调用Goexit(),会导致panic异常

runtime调度器是非常有用的东西,关于runtime包几个方法

  • Gosched:让当前线程让出cpu以让其他线程运行,它不会挂起当前线程,因此当前线程未来会继续执行

  • NumCPU:返回当前系统的CPU核数量

  • GOMAXPROCS:设置最大的可同时使用的CPU核数

  • Goexit:退出当前goroutine(但是defer语句会照常执行)

  • NumGoroutine:返回真该执行和排队的任务总数

  • GOOS:目标操作系统

  • GOROOT:返回本机的GO路径

举个栗子

// 定义两个函数,Test01和Test02
// Test02在Test01运行结束之后运行
// 并且Test02在i = 3的时候结束运行
//Test01
func Test01(wg *sync.WaitGroup) {
	defer func() {
		fmt.Println("Test01结束!")
		wg.Done()
	}()
	fmt.Println("协程01循环输出:")
	for i := 0; i < 5; i++ {
		fmt.Println("协程01 -", i)
	}
}
// Test02
func Test02(wg *sync.WaitGroup) {
	defer func() {
		fmt.Println("Test02结束!")
		wg.Done()
	}()
    // 等待Test01运行结束
	runtime.Gosched()
	fmt.Println("协程02循环输出:")
	for i := 0; i < 5; i++ {
		if i == 3 {
			fmt.Println("i = 3 退出!")
            // 当i = 3时执行defer里的语句然后退出
			runtime.Goexit()
		}
		fmt.Println("协程02 -", i)
	}
}
// main函数调用
func main() {
	var wg sync.WaitGroup
	wg.Add(2)
	go Test01(&wg)
	go Test02(&wg)
	wg.Wait()
	fmt.Println("This is main function!")
}

到此这篇关于Go语言入门13(runtime包)的文章就介绍到这了,更多相关Go runtime包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Go语言入门13之runtime包案例讲解

本文链接: https://www.lsjlt.com/news/211908.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言入门13之runtime包案例讲解
    目录Runtime包GOMAXPROCS()Gosched()Goexit()举个栗子Runtime包 GOMAXPROCS() ​ 用来设置可以并行计算的CPU核数最大值,并返回之...
    99+
    2023-05-18
    Go runtime包 Go runtime
  • Go 语言入门之net/url 包
    目录引言URL 格式Go url 包函数使用格式如何使用 URL 包在 Golang 中对查询字符串进行 URL 编码在 Golang 中对多个查询参数进行 URL 编码在 G...
    99+
    2022-06-07
    net GO url
  • Go 语言入门学习之时间包
    目录1.前言2.日期和时间的表示当前时间日期函数如何在Golang中获取当前UNIX的时间戳3.访问时间组件的方法1.前言 时间和日期对于任何编程语言来说都是一个非常重要的包。 GO...
    99+
    2022-11-13
  • Go语言运算符案例讲解
    算数运算符 算数运算符和C语言几乎一样 运算符 描述 实例 ...
    99+
    2022-11-12
  • Go语言入门学习之Channel通道详解
    目录前言通道的声明通道的初始化发送和接收数据通道的关闭通道的容量与长度缓冲通道与无缓冲通道双向通道和单向通道遍历通道fibonacci 数列参考文章:总结前言 不同于传统的多线程并发...
    99+
    2022-11-13
  • GO语言字符串处理Strings包的函数使用示例讲解
    目录常用的字符串处理函数(1) Contains(2) Join(3) Index(4) Repeat(5) Replace(6) Split(7) Trim(8) Fields字符...
    99+
    2022-11-13
  • Go语言数据结构之插入排序示例详解
    目录插入排序动画演示Go 代码实现总结插入排序 插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法。 思想: 在每次迭代过程中算法随机地从输入序...
    99+
    2022-11-11
  • C语言深入探究冒泡排序与堆排序使用案例讲解
    目录一.冒泡排序1.1冒泡排序引入1.2冒泡排序的核心思想与算法分析1.3实例说明1.4优化1.5代码实现1.6性能分析二.堆排序2.1堆的基础知识2.1.1堆是什么2.1.2堆的性...
    99+
    2022-11-13
  • C语言深入探究直接插入排序与希尔排序使用案例讲解
    目录一.直接插入排序1.1直接插入排序引入1.2直接插入排序的核心思想与算法分析1.3实例说明1.4直接插入排序代码实现1.5直接插入排序性能分析二.希尔排序2.1希尔排序引入2.2...
    99+
    2022-11-13
  • C语言深入探究选择排序与基数排序使用案例讲解
    目录一.选择排序1.1 选择排序引入1.2 选择排序的基本思想与算法分析1.3 实例说明1.4 代码实现1.5 性能分析二.基数排序2.1 基数排序基本思想与算法步骤2.2 实例说明...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作