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

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

分类:其他教程 · 发布时间:2023-05-01 22:22 · 阅读:4801

这篇文章主要介绍了Go语言入门runtime包相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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!") } /*输出: 协程01循环输出: 协程01 - 0 协程01 - 1 协程01 - 2 协程01 - 3 协程01 - 4 Test01结束! 协程02循环输出: 协程02 - 0 协程02 - 1 协程02 - 2 i = 3 退出! Test02结束! This is main function! */

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

标签:
Go runtime

相关文章

C# async/await任务超时处理的实现

本文主要介绍了C# async/await任务超时处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

C#生成比较短的Token字符串

这篇文章介绍了C#生成Token字符串的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

C#中将dateTimePicker初始值设置为空

本文主要介绍了C#中将dateTimePicker初始值设置为空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一文详解Go语言中的有限状态机FSM

有限状态机(Finite State Machine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件。本文主要来和大家简单讲讲Go语言中的有限状态机FSM的使用,需要的可以参考一下

C#中程序自删除实现方法

这篇文章主要介绍了C# 程序自删除实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回分类 返回首页