美文网首页
go defer用法

go defer用法

作者: 夜空中乄最亮的星 | 来源:发表于2018-02-09 16:33 被阅读0次

    defer 通常用于 open/close, connect/disconnect, lock/unlock 等这些成对的操作, 来保证在任何情况下资源都被正确释放. 在这个角度来说, defer 操作和 Java 中的 try ... finally 语句块有异曲同工之处.

    var mutex sync.Mutex
    var count = 0
     
    func increment() {
      mutex.Lock()
      defer mutex.Unlock()
      count++
    }
    

    increment函数中, 我们为了避免竞态条件的出现, 而使用了 Mutex 进行加锁. 而在进行并发编程时, 加锁了却忘记(或某种情况下 unlock 没有被执行), 往往会造成灾难性的后果. 为了在任意情况下, 都要保证在加锁操作后, 都进行对应的解锁操作, 我们可以使用 defer 调用解锁操作.

    相关文章

      网友评论

          本文标题:go defer用法

          本文链接:https://www.haomeiwen.com/subject/nixqtftx.html