golang trace 的一个例子

1 · huber · April 16, 2020, 5:14 p.m.
今天,通过一个例子,一方面熟悉trace在自定义范围内的分析,另一方面golang 在协程调度策略上的浅析。 Show Code // trace_example.go package main import ( "context" "fmt" "os" "runtime" "runtime/trace" "sync" ) func main(){ // 为了看协程抢占,这里设置了一个cpu 跑 runtime.GOMAXPROCS(1) f, _ := os.Create("trace.dat") defer f.Close() _ = trace.Start(f) defer trace.Stop() ctx, task := trace.NewTask(context.Background(), "sumTask") defer task.End() var wg sync.WaitGroup wg.Add(10) for i := 0; i < 10; i ++ { // 启动10个协程,只是做一个累加运算 go func(re...