在一个页面可能会有请求多个接口的情况,而接口的请求是异步的,为了能保证一个页面数据的同步处理,针对多个异步线程的处理建议使用信号量机制,在异步线程开始前将信号量加1,线程执行完成后再把信号量减1,然后通过线程的汇总,在信号量为0的时候执行页面数据的处理操作。
信号量的加减操作有两种:
第一种:
自定义一个信号量dispatch_semaphore_t,一般默认初始化的信号量值是0.
信号量加1:
dispatch_semaphore_signal(semaphore);
信号量减1:
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
第二种:
创建线程组dispatch_group_t,对线程组进行信号量的加减操作
信号量加1:
dispatch_group_enter(group);
信号量减1:
dispatch_group_leave(group);