美文网首页
GCD 创建FIFO队列及信号量

GCD 创建FIFO队列及信号量

作者: i0S_毛_宇 | 来源:发表于2015-12-02 22:47 被阅读0次

今天项目需要创建一个FIFO队列,以前是自己写来实现,这次想通过GCD来做,写完后,感觉很是方便。

大概需求:UI界面可以不停的点击Button,然后进行不同操作的语音提示。一段语音结束了才能开始下段语音。上重要代码,走起。

1 创建dispatch_queue_t 

_soundQueue=dispatch_queue_create("com.dispatch.playSound",DISPATCH_QUEUE_SERIAL);

2 �给UI界面提供往队列添加数据接口

- (void)addText:(NSString*)text {

        dispatch_async(_soundQueue, ^{

                [self playSound:text];

        });

}

3 在playSound中创建信号量

_semaphore=dispatch_semaphore_create(0);

........

设置:AVSpeechSynthesizer的delegate

播放声音:[AVSpeechSynthesizer speakUtterance]

等待信号量释放:dispatch_semaphore_wait(_semaphore,DISPATCH_TIME_FOREVER);

4 在AVSpeechSynthesizer的delegate的didFinishSpeechUtterance中,释放信号量dispatch_semaphore_signal(_semaphore);

相关文章

  • GCD 创建FIFO队列及信号量

    今天项目需要创建一个FIFO队列,以前是自己写来实现,这次想通过GCD来做,写完后,感觉很是方便。 大概需求:UI...

  • GCD

    GCD 1.串行队列 创建串行队列的两种方式 (队列 FIFO 按添加的先后顺序执行) 2.并行队列 dispat...

  • iOS GCD 之 底层原理分析

    本文是队列创建、同步/异步函数、单例、信号量以及调度组的底层原理分析 队列创建 在上一篇文章GCD 之 函数与队列...

  • GCD队列和死锁解析

    GCD核心概念 任务 :执行GCD函数block(代码块)中的代码 队列 :用来存放任务的队列,遵循FIFO原则 ...

  • iOS多线程--GCD篇

    GCD 文章目录GCD简介任务和队列GCD的使用步骤队列的创建方法任务的创建方法GCD的基本使用并行队列 + 同步...

  • (十九)AQS实现原理(具体例子待总结)

    AbstractQueuedSynchronizer,提供FIFO队列,构建锁或者其他同步组件(信号量、事件等、R...

  • GCD

    GCD 基本知识点 队列的特点:FIFO.(不管是串行的还是并发的,任务是执行顺序都是按照FIFO规则) 串行队列...

  • GCD串行并发队列

    学习完本篇,您会对以下知识点更加理解: 队列 串行队列 并发队列 GCD全局队列 GCD主队列 创建串行队列 创建...

  • NSOperation和GCD

    NSOperation和GCD如何选择 GCD以block为单位,代码简洁。同时GCD中的队列、组、信号量、sou...

  • iOS基础之GCD

    GCD简介 GCD提供并管理了FIFO任务队列,提交到任务队列中的任务(Task)在一个线程池中执行。 同步syn...

网友评论

      本文标题:GCD 创建FIFO队列及信号量

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