《—》 基本的基础知识
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】。
网友评论