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

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

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

GCD和网络加载的一点整理(一)_第1张图片

第二种,用信号量来控制

GCD的信号量有3个函数

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

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

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


GCD和网络加载的一点整理(一)_第2张图片

你可能感兴趣的:(GCD和网络加载的一点整理(一))