Board logo

标题: iOS 中常见的几种锁-代码示例(6) [打印本页]

作者: look_w    时间: 2019-3-10 14:28     标题: 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);
    复制代码




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0