美文网首页
GCD异步任务的三种同步方式

GCD异步任务的三种同步方式

作者: 北京旅游 | 来源:发表于2017-06-09 17:13 被阅读0次


1、dispatch_semaphore_t

步骤 1)、mainSemaphore = dispatch_semaphore_t semaphore = dispatch_semaphore_create(Number);

 可设置number信号量,通过设置信号量可是实现控制并发数

2)dispatch_semaphore_signal(mainSemaphore)

信号量加1

3)dispatch_semaphore_wait(mainSemaphore, DISPATCH_TIME_FOREVER);

信号量为0,则等待; 大于等于1则减一后,继续执行

个人认为适合异步任务数量确定的情况

2、dispatch_group_enter dispatch_group_leave

步骤 1)dispatch_group_t group = dispatch_group_create();

2)在异步任务前 dispatch_group_enter(group) ;任务结束时 dispatch_group_leave(group);

3) 在一个(多个)异步任务结束后 dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{ 要执行的任务 }

适合异步任务不确定的情况,使用起来很灵活,但是对于不是按顺序加入到任务队列中的任务就比较麻烦了,也就是说最后才能调用dispatch_group_notify

3、dispatch_group_async

步骤 1)dispatch_group_t dispatchGroup = dispatch_group_create();

2)dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);

dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next1", DISPATCH_QUEUE_CONCURRENT);

3)dispatch_group_async(dispatchGroup, dispatchQueue, ^(){

NSLog(@"任务一完成");

});

dispatch_group_async(dispatchGroup, dispatchQueue, ^(){

NSLog(@"任务二完成");

});

4)dispatch_group_async(dispatchGroup, globalQueue, ^{

NSLog(@"任务三完成");

});

向两个异步队列提交两个任务,任务1和2都完成才会执行任务3

相关文章

  • iOS多线程知识点梳理

    iOS多线程实现方式 pthread NSThread (三种方式创建) GCD 同步&异步针对的主体是任务,以t...

  • OC 线程笔记

    GCD: 创建任务,添加到队列,GCD自动分发任务 同步/异步同步任务,异步任务的区别: 线程是否要等待任务结束,...

  • iOS 多线程

    常见多线程方案 GCD 用同步的方式执行任务 用异步的方式执行任务 GCD源码:https://github.co...

  • GCD异步任务的三种同步方式

    1、dispatch_semaphore_t 步骤 1)、mainSemaphore = dispatch_sem...

  • GCD队列、同步异步

    GCD队列、同步异步 GCD队列、同步异步

  • 多线程

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

  • CGD知识小结

    gcd 分为并行,串行两种方式,任务的执行可分为,同步,异步执行方式。 dispatch_queue_tqueue...

  • 多线程相关

    1. GCD 1. 同步/异步 串行/并发 死锁原因队列引起的循环等待主队列中所提交的任务无论是同步方式还是异步...

  • iOS相关 | GCD学习

    GCD核心概念:任务和队列 任务:在线程中执行的那段代码。执行方式有两种:同步执行和异步执行 * 同步执行:只能在...

  • GCD学习总结

    GCD容易混淆的概念 任务,同步,异步 ,串行队列,并发队列 任务就是要做的事情 同步和异步是用来执行任务的 串行...

网友评论

      本文标题:GCD异步任务的三种同步方式

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