1.首先先介绍一个概念dispatch_semaphore
- dispatch_semaphore信号量为基于计数器的一种多线程同步机制。用于解决在多个线程访问共有资源时候,会因为多线程的特性而引发数据出错的问题.
- 如果semaphore计数大于等于1,计数-1,返回,程序继续运行。如果计数为0,则等待。
- dispatch_semaphore_signal(semaphore)为计数+1操作。dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)为设置等待时间,这里设置的等待时间是一直等待。我们可以通俗的理解为单柜台排队点餐,计数默认为0,每当有顾客点餐,计数+1,点餐结束-1归零继续等待下一位顾客。比较类似于NSLock。
2.主要是介绍使用dispatch_semaphore和NSOperationQueue结合实现依次执行异步请求
- NSOperationQueue中装有任务,设置任务之间相互依赖
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
[self