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);

  • 相关阅读:
    1.Spring MVC详解
    servlet的九大内置对象
    Hibernate设置事务的隔离级别
    wamp下php报错session_start(): open(d:/wamp/tmpsess_ku776hvb06ko4lv9d11e7mnfj1, O_RDWR) failed: No such file or directory
    json_decode()相关报错
    wamp下var_dump()相关问题
    es6箭头函数内部判断
    Json数组对象取值
    npm指向淘宝源
    APICloud之封装webApp
  • 原文地址:https://www.cnblogs.com/liaolijun/p/7765433.html
Copyright © 2011-2022 走看看