runtime包中的协程管理函数可以控制协程的创建和退出,如下所示:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
fmt.Println("Hello, world!")
}()
runtime.Gosched()
}
上面的代码创建了一个协程并输出Hello, world!,然后调用runtime包中的Gosched函数,使当前协程让出CPU时间片,以便其他协程运行。
runtime包中的栈管理函数可以控制协程栈的大小和增长方式,如下所示:
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 删除。