异步处理3:使用nslock锁定线程

作者: Dayu大鱼 | 来源:发表于2016-07-15 15:52 被阅读223次

异步处理3:使用nslock锁定线程

锁定线程:确保两个线程(处理的程序)不会使用同一段代码


1.添加一个属性:@property(nonatomic,strong)NSLock*threadLock;  
2.viewDidLoad中新建对象NSLock,self.threadLock=[NSLock alloc]init];
3.在适当的位置添加锁[self.threadLock lock];
4.适当的位置: 

-(void)bigTask{
** [self.threadLock lock];**
    @autoreleasepool {

        int updateUIWhen = 500;
        for (int i=0; i<10000; i++) {
            
            NSString*newString=[NSString stringWithFormat:@"i=%d",i];
            NSLog(@"%@ ",newString);
            
            if (i==updateUIWhen) {
              
                float f=(float)i/10000;
               
                NSNumber*percentDone=[NSNumber numberWithFloat:f];
               
                [self performSelectorOnMainThread:@selector(updateProgressViewWithPercentage:)withObject:percentDone waitUntilDone:YES];
                
                updateUIWhen=updateUIWhen+1000;

            }
            
            
        }
        
        [self performSelectorOnMainThread:@selector(updateProgressViewWithPercentage:)withObject:[NSNumber numberWithFloat:1.0] waitUntilDone:YES];
        
        [self.myActivityIndicator stopAnimating];
    }
    
   ** [self.threadLock unlock];**
}

打 ** 的地方就是 加锁的地方

结果: 程序运行点击一次,会扥到for循环 也就是进度条执行完成后才会执行下一次的运行

相关文章

  • 异步处理3:使用nslock锁定线程

    异步处理3:使用nslock锁定线程 锁定线程:确保两个线程(处理的程序)不会使用同一段代码 打 ** 的地方就是...

  • IntentService

    继承自Service,处理异步请求,实现多线程。 使用步骤: 定义 IntentService的子类传入线程名称、...

  • iOS多线程面试题:如何使用两个线程交替打印1--100?

    使用两个线程交替打印奇偶数,需要用到锁来实现,下边有3种实现方式: 使用NSLock实现 使用NSConditio...

  • Swift-多线程

    摘要本文不探讨子线程、主线程、同步和异步的常规操作。只是使用DispatchWorkItem 属性来处理1.子线程...

  • SpringBoot-@Async异步注解

    使用@Async可以帮助我们快速将@Async标注的方法在一个异步线程池中处理 SpringBoot-线程池使用 ...

  • Android实习生 —— 异步处理之AsyncTask

    目录 前言 在【异步处理之Handler】中我们已经了解了关于线程的相关知识,明白为什么要进行异步处理以及使用Ha...

  • Android消息机制分析

    异步消息处理线程 对于普通的线程而言,执行完run()方法内的代码后线程就结束。而异步消息处理线程是指,线程启动后...

  • Android性能优化之使用线程池处理异步任务

    zhengxiaoyong.me/2015/11/17/Android性能优化之使用线程池处理异步任务/

  • 项目经验

    设计技巧:1、回调处理(调用方回调处理)2、批量操作(批量操作提高性能)3、mq + 异步化(消息队列+多线程异步...

  • Handler使用

    主要用于异步处理: 存在于线程中开启子线程:异步处理 主要接受子线程发送的数据,并用此数据配合主线程更新UI ··...

网友评论

    本文标题:异步处理3:使用nslock锁定线程

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