运行一个相当简单的Go程序后:
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
sigs := make(chan os.Signal)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
fmt.Printf("awaiting signal at %d\n", os.Getpid())
<-sigs
fmt.Printf("\nexiting\n")
}
我可以观察到在我的系统上创建了以下线程(由top -H
找到以列出除进程之外的线程):
3949 USER 20 0 3232 1400 1032 S 0.0 0.0 0:00.00 goroutines1
3950 USER 20 0 3232 1400 1032 S 0.0 0.0 0:00.00 goroutines1
3951 USER 20 0 3232 1400 1032 S 0.0 0.0 0:00.00 goroutines1
3952 USER 20 0 3232 1400 1032 S 0.0 0.0 0:00.00 goroutines1
3953 USER 20 0 3232 1400 1032 S 0.0 0.0 0:00.00 goroutines1
PID 3949
是主线程。
在哪里可以找到有关Go运行时运行的其他4个线程的规范/信息?