前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-标准库-runtime(四)

Go-标准库-runtime(四)

原创
作者头像
堕落飞鸟
发布2023-04-23 07:37:59
1740
发布2023-04-23 07:37:59
举报
文章被收录于专栏:飞鸟的专栏

协程管理

runtime包中的协程管理函数可以控制协程的创建和退出,如下所示:

代码语言:javascript
复制
package main

import (
	"fmt"
	"runtime"
)

func main() {
	go func() {
		fmt.Println("Hello, world!")
	}()
	runtime.Gosched()
}

上面的代码创建了一个协程并输出Hello, world!,然后调用runtime包中的Gosched函数,使当前协程让出CPU时间片,以便其他协程运行。

栈管理

runtime包中的栈管理函数可以控制协程栈的大小和增长方式,如下所示:

代码语言:javascript
复制
package main

import (
	"fmt"
	"runtime"
)

func main() {
	var mem runtime.MemStats
	runtime.ReadMemStats(&mem)
	fmt.Printf("StackInuse = %v MiB\n", mem.StackInuse/1024/1024)
	fmt.Printf("StackSys = %v MiB\n", mem.StackSys/1024/1024)

	runtime.SetMaxStack(16 * 1024 * 1024)

	runtime.ReadMemStats(&mem)
	fmt.Printf("StackInuse = %v MiB\n", mem.StackInuse/1024/1024)
	fmt.Printf("StackSys = %v MiB\n", mem.StackSys/1024/1024)
}

上面的代码先打印出协程栈的使用情况和总大小,然后将协程栈的最大大小设置为16MB,最后再次打印出协程栈的使用情况和总大小。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协程管理
  • 栈管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档