golang之goroutine退出时间点:
原先自以为在自定义函数里面开辟一个新的协程,函数退出,开辟的协程也会强制退出,直到跟公司项目,看大佬写的调度才发现只有一种情况正在运行的goroutine会因为其他goroutine的结束被终止,就是main函数的退出或程序停止执行。
goroutine的调度是由 Golang 运行时进行管理的。同一个程序中的所有 goroutine 共享同一个地址空间。goroutine设计的退出机制是由goroutine自己退出,不能在外部强制结束一个正在执行的goroutine(只有一种情况正在运行的goroutine会因为其他goroutine的结束被终止,就是main函数退出或程序停止执行)。
①进程/main函数退出
②通过channel退出
③通过context退出
④通过Panic退出
⑤等待自己退出
