iOS 依次执行 异步网络请求的一种实现

本文介绍了如何在iOS中利用dispatch_semaphore信号量和NSOperationQueue结合,实现异步网络请求的依次执行。通过设置任务依赖和使用KVO监听任务数,确保所有请求完成后再执行后续操作。
摘要由CSDN通过智能技术生成

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值