Go-标准库-runtime(四)

2023-04-23 07:37:59 浏览数 (1)

协程管理

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 MiBn", mem.StackInuse/1024/1024)
	fmt.Printf("StackSys = %v MiBn", mem.StackSys/1024/1024)

	runtime.SetMaxStack(16 * 1024 * 1024)

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

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

go

0 人点赞