zoukankan      html  css  js  c++  java
  • iOS 递归锁

    原理:递归锁也是通过 pthread_mutex_lock 函数来实现,在函数内部会判断锁的类型。NSRecursiveLock 与 NSLock 的区别在于内部封装的 pthread_mutex_t 对象的类型不同,前者的类型为 PTHREAD_MUTEX_RECURSIVE

    运用场景:循环(多张图片循环上传),递归

    //递归锁实例化

        NSRecursiveLock *lock = [[NSRecursiveLock alloc] init];

        static void (^RecursiveMethod)(NSInteger);

        //  同一线程可多次加锁,不会造成死锁

        RecursiveMethod = ^(NSInteger value){

            [lock lock];//一进来就要开始加锁

            [NetWorkManager requestWithMethod:POST Url:url Parameters:paraDic success:^(id responseObject) {

                [self reuestForSuccess];

      //一旦数据获取成功就要解锁 不然会造成死锁

                  [lock unlock];

            } requestRrror:^(id requestRrror) {

                //条件没有达到,开始循环操作

                if(value > 0){

                    RecursiveMethod(value-1);//必须-1  循环

                }

                if(value == 0){

                //条件 如果 == 0 代表循环的次数条件已经达到 可以做别的操作

                }

                //失败后也要解锁

                    [lock unlock];

            }];

                 //记得解锁

                  [lock unlock];

        };

        //设置递归锁循环次数  自定义

           RecursiveMethod(5);

  • 相关阅读:
    Oracle 修改带数据的字段类型
    Oracle的主键约束、唯一约束与外键约束
    Oracle 唯一 索引 约束 创建 删除
    Oracle 在Drop表时的Cascade Constraints
    iTunes备份注意
    谈判的四种风格
    求平均速度
    网站推荐的代码自动生成软件实际使用感触
    DOTA游戏相关的文章
    魔兽争霸3不能弹出输入法原因
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/8403547.html
Copyright © 2011-2022 走看看