对于下面的代码段,当收到^ C时,不会进行延迟呼叫.清理是否可能引入竞争条件?如果是,那么在接收中断时可能有更好的清理模式?
func fn() {
// some code
defer cleanup()
go func() {
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
// Block until a signal is received.
_ = <-c
cleanup()
}
for {
// Infinite loop. Returns iff an error is encountered in the
// body
}
}
Run Code Online (Sandbox Code Playgroud)