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

  • 相关阅读:
    nginx优化配置
    mysql查看变量/配置文件位置
    关于ubuntu的ssh远程登录的问题
    ubuntu镜像下载地址
    百度地图标注地点
    Yii常用方法
    python_将一组数据展示成直方图(以list为例)
    opencv_形态学结构化元素对形态学图像处理的影响
    C语言学习_从VC++6.0开始
    SVM原理(1)
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/8403547.html
Copyright © 2011-2022 走看看