swift 互斥锁lock学习
来源:互联网 发布:淘宝旺铺全屏代码 编辑:程序博客网 时间:2024/06/06 19:23
一些学习过程中的难点解决
lock锁看了一片文章,写的很牛车:http://blog.csdn.net/hello_hwc/article/details/50037505
例子
lock锁,我是用于两个线程同时执行一段代码或者一个方法,比如同时刷新auth认证,例如:
class ViewController: UIViewController { let lock = NSLock() var person = Person(name: "Leo", age: 23) override func viewDidLoad() { super.viewDidLoad() let queue1 = dispatch_queue_create("com.test.queue1", DISPATCH_QUEUE_SERIAL) let queue2 = dispatch_queue_create("com.test.queue1", DISPATCH_QUEUE_SERIAL) dispatch_async(queue1) { () -> Void in self.lock.lock() self.person.update("queue1", delay: 2, age: 1) self.lock.unlock() } dispatch_async(queue2) { () -> Void in self.lock.lock() self.person.update("queue2", delay: 1, age: 2) self.lock.unlock() } self.performSelector("logPerson", withObject: nil, afterDelay: 4) // Do any additional setup after loading the view, typically from a nib. } func logPerson(){ NSLog("%@ %d", person.name,person.age) }}
这样就会当执行 self.person.update(“queue2”, delay: 1, age: 2)时候锁定,执行完后释放锁,然后下一个线程才会重新调用update,这样数据不会错乱
我的代码是这样的:
case .Failure(let error): if response.response?.statusCode == 401{//刷新token dispatch_async(queue3) { () -> Void in lock?.lock()//这里添加互斥锁,防止一起刷新token,这样就会分开之行token方法cjq RefreshToken({ (AnyObject) in lock?.unlock() var hs = headers hs!["Authorization"] = NSUserDefaults.standardUserDefaults().stringForKey("access_token") } }, logOut: { (NSError) in logOut?() lock?.unlock() }) } }else{ failure?(error) } }
RefreshToken(success:((AnyObject?) -> Void)?, logOut:((NSError?) -> Void))是闭包函数
0 0
- swift 互斥锁lock学习
- Java学习Lock.lock()
- 学习Lock
- Swift学习
- swift学习
- swift学习
- 学习swift
- swift学习
- SWift 学习
- Swift学习
- 学习swift
- swift学习
- swift 学习
- swift学习
- swift学习
- swift学习
- swift学习
- swift学习
- React-Native-源码分析二-JSX如何渲染成原生页面(上)
- Reading List
- Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友列表
- linux sort
- ifndef/define/endif/ifdef
- swift 互斥锁lock学习
- React-Native-源码分析三-JSX如何渲染成原生页面(下)
- java关于前后台页面之间跳转的路径问题
- viewpager控制切换速度
- umask 文件默认权限
- 页面上获取登录用户名
- 移动App测试中的最佳做法
- keepalived
- Android SpannableString属性详解