小编And*_*rei的帖子

在Go中收到SIGINT时是否调用了延迟函数?

对于下面的代码段,当收到^ 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)

go resource-cleanup deferred-execution goroutine

4
推荐指数
1
解决办法
933
查看次数