Swift 中的 Lock

// 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 不会被其他线程改变

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容