一、背景
一个个人主页有四个接口,需求是等四个接口请求都好了,再展示刷新表格展示数据。那么,要点就是如何得知四个请求接口都请求好了。
方案一:每个接口都是用一个变量来控制是否请求结束,最后综合起来判断是否完成请求。
方案二:使用GCD信号量。
二、GCD信号量说明
创建信号量:
dispatch_semaphore_create(long value); 创建的时候要初始化总信号量;
等待信号量:----总信号量会-1
dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);
第二参数表示超时时间:DISPATCH_TIME_FOREVER(表示:没有接受到信号就永远等待下去,即阻塞该线程,所以切记不要将等该信号放在主线程中!!!);其他值就是不等待。
发送信号量:----总信号量会+1
dispatch_semaphore_signal(dispatch_semaphore_t dsema);
关于总信号量的说明:
执行完dispatch_semaphore_wait时总信号量<0,就会阻塞当前线程;
执行完dispatch_semaphore_signal时总信号量≥0,就会继续执行线程;
三、实际代码操作