2017-01-24 3 views

答えて

2

それは、実行のメインスレッドをカプセル化し、メインゴルーチンです。あなたは、例えば、あなたのプログラム例ではゴルーチンスタックトレースを印刷していることを観察することがあります

package main 

import (
    "log" 
    "os" 
    "runtime" 
    "runtime/pprof" 
) 

func main() { 
    r := runtime.NumGoroutine() 
    log.Println("Num of goroutines: ", r) 
    pprof.Lookup("goroutine").WriteTo(os.Stdout, 1) 
} 

次を生成する:

2009/11/10 23:00:00 Num of goroutines: 1 
goroutine profile: total 1 
1 @ 0xa22a0 0xa1fc0 0x9d640 0x20180 0x5a0a0 0x98e81 
# 0xa229f runtime/pprof.writeRuntimeProfile+0xdf /usr/local/go/src/runtime/pprof/pprof.go:614 
# 0xa1fbf runtime/pprof.writeGoroutine+0x9f /usr/local/go/src/runtime/pprof/pprof.go:576 
# 0x9d63f runtime/pprof.(*Profile).WriteTo+0xff /usr/local/go/src/runtime/pprof/pprof.go:298 
# 0x2017f main.main+0x17f    /tmp/sandbox832735226/main.go:13 
# 0x5a09f runtime.main+0x39f   /usr/local/go/src/runtime/proc.go:183 

お知らせをトレースの下部にruntime.mainこと。

トレースはダンプされている2つのゴルーチン生きているとプログラム:

2009/11/10 23:00:00 Num of goroutines: 2 
goroutine profile: total 2 
1 @ 0x20220 0x98f61 
# 0x20220 main.main.func1+0x0 /tmp/sandbox584983760/main.go:12 

1 @ 0xa2380 0xa20a0 0x9d720 0x201e0 0x5a180 0x98f61 
# 0xa237f runtime/pprof.writeRuntimeProfile+0xdf /usr/local/go/src/runtime/pprof/pprof.go:614 
# 0xa209f runtime/pprof.writeGoroutine+0x9f /usr/local/go/src/runtime/pprof/pprof.go:576 
# 0x9d71f runtime/pprof.(*Profile).WriteTo+0xff /usr/local/go/src/runtime/pprof/pprof.go:298 
# 0x201df main.main+0x1df    /tmp/sandbox584983760/main.go:15 
# 0x5a17f runtime.main+0x39f   /usr/local/go/src/runtime/proc.go:183 

package main 

import (
    "log" 
    "os" 
    "runtime" 
    "runtime/pprof" 
) 

func main() { 
    c := make(chan int) 
    go func() { <-c }() 
    r := runtime.NumGoroutine() 
    log.Println("Num of goroutines: ", r) 
    pprof.Lookup("goroutine").WriteTo(os.Stdout, 1) 
} 

はの線に沿って何かを演出します

関連する問題