美文网首页iOS学习笔记2017-3-29
GCD之信号量(dispatch_semaphore_t)

GCD之信号量(dispatch_semaphore_t)

作者: JL_chen | 来源:发表于2017-02-22 00:48 被阅读100次

一、背景

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

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

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

三、实际代码操作


      

相关文章

网友评论

    本文标题:GCD之信号量(dispatch_semaphore_t)

    本文链接:https://www.haomeiwen.com/subject/faryettx.html