首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

iOS 中常见的几种锁-代码示例(6)

iOS 中常见的几种锁-代码示例(6)

6.自旋锁

    bool lock = false; // 一开始没有锁上,任何线程都可以申请锁  
    do {  
        while(lock); // 如果 lock 为 true 就一直死循环,相当于申请锁
        lock = true; // 挂上锁,这样别的线程就无法获得锁
            Critical section  // 临界区
        lock = false; // 相当于释放锁,这样别的线程可以进入临界区
            Reminder section // 不需要锁保护的代码        
    }
     
    复制代码

6.1 OSSpinLock

    YYKit作者的文章 不再安全的 OSSpinLock有说到这个自旋锁存在优先级反转的问题。

6.2 os_unfair_lock

    自旋锁已经不再安全,然后苹果又整出来个 os_unfair_lock_t ,这个锁解决了优先级反转的问题。

        os_unfair_lock_t unfairLock;
        unfairLock = &(OS_UNFAIR_LOCK_INIT);
        os_unfair_lock_lock(unfairLock);
        os_unfair_lock_unlock(unfairLock);
    复制代码
返回列表