GCD和网络加载的一点整理(一)

项目开发中我们经常遇到在一个页面要同时发起多个请求的情况,并且全部完成才更新UI,这时候就需要用到group 了,由于网络请求用AF都是发起异步请求,所以这里主要是写一下线程同步的问题,Demo链接,上代码

第一种,用dispatch_group_enter 和 dispatch_group_leave来同步,这两个是成对出现的,dispatch_group_enter表示从group里开始一个任务,dispatch_group_leave表示一个任务从group里结束了

第二种,用信号量来控制

GCD的信号量有3个函数

dispatch_semaphore_create创建一个semaphore(通俗讲就是创建一个有多少个通道的信号量)

dispatch_semaphore_signal发送一个信号(通俗讲,就是+1,给一个信号)

dispatch_semaphore_wait等待信号(通俗讲就是要看信号满足不满足,满足,通过,不满足,等到满足为止或者到了超时的时间,才可继续)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在上一篇文章中,我们对GCD有了基本的认知,知道其中一些简单的类型,和一些简单函数。这本篇文章中,我们将继续学习G...
    凌云壮志几多愁阅读 1,214评论 0 0
  • 1. 并行和并发 简单来说,若说两个任务A和B并发执行,则表示任务A和任务B在同一时间段里被执行(更多的可能是二者...
    Z_Han阅读 655评论 0 8
  • 谈到iOS多线程,一般都会谈到四种方式:pthread、NSThread、GCD和NSOperation。其中,苹...
    攻城狮GG阅读 285评论 0 3
  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 8,040评论 0 1
  • 别让不好意思害了你(升级版) (高朋) 别人能搞定的事,我搞不定,不是我没有面子,而是社会不平等,所以要争的是平等...
    缘也阅读 13,620评论 0 8