美文网首页
ios 上的线程同步GCD[18 /2/7]

ios 上的线程同步GCD[18 /2/7]

作者: helinyu | 来源:发表于2018-02-07 23:33 被阅读7次

《—》 基本的基础知识

1、<dispatch/dispatch.h> 这里面的semaphore.h 文件中。
dispatch_semaphore_t dispatch_semaphore_create(long value);
创建一个新的计数信号量带有一个初始值;
讨论: 传递0 对于值是有用的当两个线程需要协调对于一个特定的事件的完成。 传递一个值大于0 是用于的对于管理一个无线的池资源,知道池的大小等于这个值。
参数: value 信号量的开始值,传递一个值小于0 将造成返回NULL;
结果: 创建一个新的信号量,或者null失败。

long dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);
抽象: 等待(减少)一个信号量
讨论: 减少一个技术信号。如果结果值小于0,这个函数等带一个信号量去发生在染回之前。
参数:dsema
信号量,结果返回null在参数中没有定义;
参数: timeout
当超时的时候(查看dispatch_time) .为了方便,这里有 DISPATCH_TIME_NOW 和DISPATCH_TIME_FOREVER 常量;
返回结果: 0 表示成功, 不是0 表示超时。

long dispatch_semaphore_signal(dispatch_semaphore_t dsema);
抽象: 发送信号(增加)一个信号量
讨论: 增加一个技术信号量。如果以前的值小于0,这个函数唤醒一个等待线程在返回之前。
参数: desma 技术信号量
如果参数没有定义,将会返回NULL
结果: 函数返回不是0 如果线程被唤醒,否则返回0.。

《二》 实例

添加数据的先后顺序问题

看到3 这个数据还是没有插入早4的前面。



使用了信号量之后的处理结果就正确了

至于为什么使用信号量:
其实就是信号量可以更加细粒度的进行线程同步【相比于Serial Dispatch Queue 和dispatch_barrier_async】。

相关文章

  • ios 上的线程同步GCD[18 /2/7]

    《—》 基本的基础知识 1、 这里面的semaphore.h 文件中。d...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS开发(12)多线程

    一、多线程 1、iOS中的常见多线程方案 2、GCD的常用函数a) GCD中有2个用来执行任务的函数 用同步的方式...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

  • 多线程

    ios中为我们提供了GCD、NSOpration、NSThread 一、GCD多线程与锁GCD 同步异步、串行、并...

  • iOS gcd看我就够了

    gcd是iOS中多线程的一种技术,下面我们来看看gcd的用法 同步&异步 同步 同步执行:字面意思,同步执行就是执...

  • 多线程

    iOS中的几种多线程GCD1、GCD分为任务和队列,任务(同步,异步)队列(串行,并发),同步串行,同步主队列的情...

  • iOS 并发,锁,线程同步【二】Operation

    在之前的一篇文章中【iOS 并发,锁,线程同步【一】GCD】,我们讨论了一下 GCD 的并发,锁和线程同步的问题,...

网友评论

      本文标题:ios 上的线程同步GCD[18 /2/7]

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