Go语言入门13(runtime包)

这篇具有很好参考价值的文章主要介绍了Go语言入门13(runtime包)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Runtime包

GOMAXPROCS()

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

Gosched()

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

Goexit()

​ 用于立即中止当前goroutine的运行(中止所在协程),而并不影响其他goroutine。⭐注意!Goexit()在中止当前协程前,还是会运行当前goroutine还没有执行的defer语句,切记,不允许在主函数调用Goexit(),会导致panic异常文章来源地址https://www.toymoban.com/news/detail-429707.html

举个栗子

// 定义两个函数,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包)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 已解决: Go Error: panic: runtime error: invalid memory address or nil pointer dereference

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾 猫头虎建议程序员必备技术栈一览表📖 : 云原生技术 Cloud Native : 🔥 Golang 🐳 Docker ☸️ Kubernetes ⛵ Helm 🔥 Serverless 🌩️ AWS Lambda ☁️ Google Cloud Functions 📦 Microservices 🚀 Envoy 🌐 Istio 📊 Prometheus 🦄 博客首页 : 🐅🐾

    2024年02月04日
    浏览(45)
  • 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类

    🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 终止当前运行的Java虚拟机 执行这段代码后,后面的代码都不再执行 返回当前系统的时间(用毫秒表示) 记录的是从1970.1.1 0时0分0秒 到现在有

    2024年02月08日
    浏览(35)
  • 已解决 docker: Error response from daemon: OCI runtime create failed: container_linux.go:349

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾 猫头虎建议程序员必备技术栈一览表📖 : 云原生技术 Cloud Native : 🔥 Golang 🐳 Docker ☸️ Kubernetes ⛵ Helm 🔥 Serverless 🌩️ AWS Lambda ☁️ Google Cloud Functions 📦 Microservices 🚀 Envoy 🌐 Istio 📊 Prometheus 🦄 博客首页 : 🐅🐾

    2024年02月08日
    浏览(62)
  • 为什么需要设置System.setProperty(“es.set.netty.runtime.available.processors“, “false“);

    引用:https://blog.csdn.net/weixin_41800884/article/details/107885391

    2024年02月12日
    浏览(40)
  • Jetson设备下使用docker报错的排错过程完整记录,failed to create shim: OCI runtime create failed: container_linux.go:38 解决“docker: Error response from daemon: Unknown runtime specified nvidia”问题

    起因是要使用nvidia部署好的ngc镜像部署  居然启动不起来也是神奇的不行   去了nvidia论坛好了一下之前的案例问题,并没解决 发现能下载这个,那就先卸载了试试,越走越偏其实,试探错误   不好意思又绕回来了  哈哈哈,把docker给整没了 兜兜转转又回来了  看看配置文

    2024年02月03日
    浏览(61)
  • docker: Error response from daemon: OCI runtime create failed: container_linux.go:318 no such file

    本地镜像默认工作目录为:/tmp/project,根据该镜像运行容器时报错,原因是:挂载的目录为/tmp/client/,而执行 npm i 命令时,进入的是client目录,解决方式:将命令修改为以下即可: cd /tmp/client/  npm i docker 运行时报错: 修改后的代码:

    2024年02月15日
    浏览(40)
  • Runtime详解,一文带你打通Java Runtime类及其相关知识。

    本文的宗旨是带你了解最全面的知识,让你能将学到的知识串联起来,构建一个完整的知识体系。 Runtime(运行时),每个Java程序在运行时都相当于启动了一个JVM实例,每个JVM实例都对应一个Runtime对象。Runtime对象是由JVM负责实例化的,因此我们无法通过传统的方式实例化一

    2024年04月27日
    浏览(27)
  • iOS--runtime

    runtime是由C和C++、汇编实现的一套API,为OC语言加入了面向对象、运行时的功能 运行时(runtime)将数据类型的确定由编译时推迟到了运行时 平时编写的OC代码,在程序运行过程中,最终会转换成runtime的C语言代码——runtime是Objective-C 的幕后⼯作者 如类结构中的ro和rw属性 ro(

    2024年02月14日
    浏览(36)
  • Java Runtime 类详解

    1. Runtime 介绍 Runtime 是 Java 提供的一个启动子进程来执行命令的方式,它提供了 6 个重载的 exec 方法,用于单独启动一个子进程来执行命令或调用程序。 public Process exec(String command) throws IOException public Process exec(String command, String[] envp) throws IOException public Process exec(String command

    2024年02月07日
    浏览(30)
  • Flink 运行时[Runtime] 整体架构

    在 Flink 整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建 Flink 应用提供了丰富且友好的接口。从下图中可以看出整个 Flink 的架构体系基本上可以分为三层,由上往下依次是 API Libraries层 、 Runtime核心层 以及 物理部署层 。

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包