

开始和结束的时候的 goroutine 数量不一致
1
^C2022/02/23 13:44:13 收到结束信号(interrupt),准备结束进程
goroutine profile: total 2
1 @ 0x40a554 0x45d018 0x498cf9 0x4606e1
#       0x45d017        os/signal.signal_recv+0x97      /usr/lib/go-1.17/src/runtime/sigqueue.go:169
#       0x498cf8        os/signal.loop+0x18             /usr/lib/go-1.17/src/os/signal/signal_unix.go:24
1 @ 0x45bca5 0x4a8c55 0x4a8a6d 0x4a5beb 0x4b23f4 0x434c47 0x4606e1
#       0x45bca4        runtime/pprof.runtime_goroutineProfileWithLabels+0x24   /usr/lib/go-1.17/src/runtime/mprof.go:746
#       0x4a8c54        runtime/pprof.writeRuntimeProfile+0xb4                  /usr/lib/go-1.17/src/runtime/pprof/pprof.go:724
#       0x4a8a6c        runtime/pprof.writeGoroutine+0x4c                       /usr/lib/go-1.17/src/runtime/pprof/pprof.go:684
#       0x4a5bea        runtime/pprof.(*Profile).WriteTo+0x14a                  /usr/lib/go-1.17/src/runtime/pprof/pprof.go:331
#       0x4b23f3        main.main+0xb3                                          /home/lucas/github/go-snippet/leak/main.go:37
#       0x434c46        runtime.main+0x226                                      /usr/lib/go-1.17/src/runtime/proc.go:255
经过 pprof 的分析后,多的一个 goroutine 是 signal 创建的
这个 goroutine 如何退出呢
在开发的过程中是不是要掌握所有 goroutine 的生命周期,在程序结束时先清理 goroutine,等他们都退出了整个程序再退出