美文网首页
条件锁NSConditionLock

条件锁NSConditionLock

作者: 春眠不觉晓光 | 来源:发表于2018-04-17 15:12 被阅读0次

线程锁是什么?

简单来讲,线程锁的存在的就是为了确保数据安全和多线程数据同步。当使用线程A执行一段加锁的代码时,线程B调用这段代码时就被等待,只有A线程执行完此代码解锁后,B线程才可进入。

线程锁有哪些?

1、NSLock

2、@synchronized代码块

3、GCD中的信号量dispatch_semaphore_t

4、NSCondition

5、NSConditionLock

略。。。

NSConditionLock

有意思的是条件锁,这里的条件并不是bool表达式中的条件,而是一个特定的int值,操作数组很方便的那种

- (void)doConditionAction{

    while (1) {

        [conditionLock lockWhenCondition:0];

        [NSThread sleepForTimeInterval:0.5];

        [imagesArray addObject:[NSString stringWithFormat:@"%d",rand()]];

        [conditionLock unlockWithCondition:[imagesArray count]==10?[imagesArray count]:0];

        if ([imagesArray count]>=10) {

            NSLog(@"%@ 数组元素%ld个",[NSThread currentThread],[imagesArray count]);

        }else{

            NSLog(@"%@ 数组元素%ld个",[NSThread currentThread],[imagesArray count]);

        }

    }

}

相关文章

  • iOS中目前最喜欢用的四种锁

    dispatch_semaphore_t(信号锁) NSLock(锁) NSConditionLock(条件锁) ...

  • 条件锁NSConditionLock

    线程锁是什么? 简单来讲,线程锁的存在的就是为了确保数据安全和多线程数据同步。当使用线程A执行一段加锁的代码时,线...

  • iOS锁系列-目录

    1、 iOS锁系列-NSLock对象锁2、iOS锁系列-NSConditionLock条件锁3、iOS锁系列-NS...

  • iOS锁系列-NSConditionLock条件锁

    代码示例: 打印结果: 结果说明: 1 初始化一个条件锁,条件为02 由于线程1 和线程4条件不满足,所以循环一段...

  • NSConditionLock

    ****NSConditionLock**** 对象所定义的互斥锁可以在使得在某个条件下进行锁定和解锁。它和 **...

  • iOS锁-NSConditionLock

    NSConditionLock 下面是苹果官方文档的说法: A lock that can be associat...

  • 条件锁

    一、NSCondition 与 NSConditionLock 1、NSCondition 需要外部定义条件变...

  • Lock

    iOS中以NS开头常见的锁的有NSCondition、NSConditionLock、NSLock、NSRecur...

  • 多线程二

    一、死锁 最容易导致死锁的一个情况信号锁 + 互斥锁 ,没处理好,导致死锁,NSConditionLock 解决死...

  • 多线程知识整理2

    NSConditionLock 是对NSCondition的进一步封装。可以设置具体条件image.png dis...

网友评论

      本文标题:条件锁NSConditionLock

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