在go语言中优雅退出goroutines
在go语言中优雅退出goroutines,通常需要做以下3点: 1. 向各个goroutines发通知,令其退出,如shutdown. 2. 等待各个goroutines都退出,如: sync.WaitGroup. 3. 在退出goroutine之前,确保数据不丢失(1.停止生产数据。2.关闭数据channel messages. 3. 消费者goroutine检查判断数据channel messages是否有效,若无效,则退出。) package main import ( "fmt" "sync" "os" "os/signal" "syscall" ) func consumer(messages <- chan int, shutdown <- chan int, wg *sync....阅读全文