goexit()的作用

runtime.goexit()退出所在协程

func exit()  {
    
    
	defer fmt.Println("BBBBBBBBBB")//在函数退出前执行
	runtime.Goexit()//退出所在子协程
	fmt.Println("CCCCCCCCCCC")
}

func main() {
    
    
	go func() {
    
    
		fmt.Println("AAAAAAAAAAAA")
		exit()
		fmt.Println("DDDDDDDDDDDDD")
	}()
	go func() {
    
    
		fmt.Println("zzzzzzzzzzzzz")
	}()
	time.Sleep(time.Second*2)
	fmt.Println("EEEEEEEEEEEEE")
}

执行结果:

AAAAAAAAAAAA
BBBBBBBBBB
zzzzzzzzzzzzz
EEEEEEEEEEEEE

runtime.Goexit()的作用是退出当前所在的协程,所以并不会影响第二个goroutine,进入goexit函数后进行协程资源回收等处理工作

Guess you like

Origin blog.csdn.net/qq_43535595/article/details/117089593