信号量

作者: huanghaodong | 来源:发表于2019-08-09 15:27 被阅读0次

    问题

    点击操作向一个队列里面添加播放音乐方法,如何实现一段音乐播放完成后,立马播放队列里下段音乐

    定义

    1、信号量:就是一种可用来控制访问资源的数量的标识,设定了一个信号量,在线程访问之前,加上信号量的处理,则可告知系统按照我们指定的信号量数量来执行多个线程。

    其实,这有点类似锁机制了,只不过信号量都是系统帮助我们处理了,我们只需要在执行线程之前,设定一个信号量值,并且在使用时,加上信号量处理方法就行了。

    方法

    //创建信号量,参数:信号量的初值,如果小于0则会返回NULL
    dispatch_semaphore_create(信号量值)
    
    //等待降低信号量
    dispatch_semaphore_wait(信号量,等待时间)
    
    //提高信号量
    dispatch_semaphore_signal(信号量)
    

    思路

    1. 初始化 self.semaphore = dispatch_semaphore_create(1); 为1
    2. 在点击事件里先dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER),检测上一个音频是否播放完毕,如何没有播放完毕(信号量为0),不会执行后面代码
    3. 音乐播放完毕的回调中,加入dispatch_semaphore_signal(self.semaphore) 增加信号量

    参考链接:ConnorLin's Blog

    相关文章

      网友评论

          本文标题:信号量

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