博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 递归锁
阅读量:5154 次
发布时间:2019-06-13

本文共 814 字,大约阅读时间需要 2 分钟。

原理:递归锁也是通过 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);

转载于:https://www.cnblogs.com/shenlaiyaoshi/p/8403547.html

你可能感兴趣的文章
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
利用jquery的contains实现搜索功能
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>