iOS学习笔记2017-3-29

GCD之信号量(dispatch_semaphore_t)

2017-02-22  本文已影响100人  JL_chen

一、背景

       一个个人主页有四个接口,需求是等四个接口请求都好了,再展示刷新表格展示数据。那么,要点就是如何得知四个请求接口都请求好了。

      方案一:每个接口都是用一个变量来控制是否请求结束,最后综合起来判断是否完成请求。

      方案二:使用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,就会继续执行线程;

三、实际代码操作


      

上一篇 下一篇

猜你喜欢

热点阅读