美文网首页
条件锁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]);

            }

        }

    }

    相关文章

      网友评论

          本文标题:条件锁NSConditionLock

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