美文网首页
Swift 中的 Lock

Swift 中的 Lock

作者: fordring2008 | 来源:发表于2017-02-05 12:26 被阅读33次

    // Lock

    // OC 中最常用的锁是 互斥锁, 即 @synchronized

    /*

    @synchronized(anObj){

    // 在括号内, anObj 不会被其他线程改变

    }

    */

    // 其实 OC 中的 @synchronized 是默认的调用了 objc_sync_enter(anObj) 和 objc_sync_exit(anObj) 这两个方法

    // Swift 可以直接写成

    func myMethod(anObj: AnyObject!){

    objc_sync_enter(anObj)

    // 在 enter 和 exit 之间  anObj 不会被其他线程改变

    objc_sync_exit(anObj)

    }

    // 更简单一点,定义一个方法,默认 OC 中

    func synchronized(_ lock: AnyObject, closure:()->()){

    objc_sync_enter(lock)

    closure()

    objc_sync_exit(lock)

    }

    // 使用的时候如下

    func myMethodLocked(anObj: AnyObject!){

    synchronized(anObj) {

    // 括号内 anObj 不会被其他线程改变

    }

    }

    相关文章

      网友评论

          本文标题:Swift 中的 Lock

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