美文网首页
GCD几种简单用法

GCD几种简单用法

作者: 恋家的人走不丢 | 来源:发表于2017-12-06 17:08 被阅读0次

//1.同步顺序执行

- (void)test1

{

dispatch_async(mainQueue, ^{

[selfdoSomeThing:@"A"];

});

dispatch_async(mainQueue, ^{

[selfdoSomeThing:@"B"];

});

dispatch_async(mainQueue, ^{

[selfdoSomeThing:@"C"];

});

}

//2.异步同时进行

- (void)test2

{

dispatch_async(globalQueue, ^{

[selfdoSomeThing:@"A"];

});

dispatch_async(globalQueue, ^{

[selfdoSomeThing:@"B"];

});

dispatch_async(globalQueue, ^{

[selfdoSomeThing:@"C"];

});

}

//3.A B同时进行最后执行C

- (void)test3

{

dispatch_group_tgroup =dispatch_group_create();

dispatch_group_async(group,globalQueue, ^{

[selfdoSomeThing:@"A"];

});

dispatch_group_async(group,globalQueue, ^{

[selfdoSomeThing:@"B"];

});

dispatch_group_async(group,globalQueue, ^{

[selfdoSomeThing:@"C"];

});

dispatch_group_async(group,globalQueue, ^{

[selfdoSomeThing:@"D"];

});

dispatch_group_notify(group,globalQueue, ^{

[selfdoSomeThing:[NSStringstringWithFormat:@"最后执行----%d",[NSThreadisMainThread]]];

dispatch_async(mainQueue, ^{

[selfdoSomeThing:[NSStringstringWithFormat:@"主线程刷新UI----%d",[NSThreadisMainThread]]];

});

});

}

//4.自定义队列自定义执行顺序可串行可并行

- (void)test4

{

dispatch_queue_tcustomQueue =dispatch_queue_create("anfu",DISPATCH_QUEUE_CONCURRENT);

dispatch_async(customQueue, ^{

[selfdoSomeThing:@"A"];

});

dispatch_async(customQueue, ^{

[selfdoSomeThing:@"B"];

});

dispatch_barrier_async(customQueue, ^{

[selfdoSomeThing:@"C"];

});

dispatch_async(customQueue, ^{

[selfdoSomeThing:@"D"];

});

dispatch_async(customQueue, ^{

[selfdoSomeThing:@"E"];

});

}

//5.延迟调用

- (void)test5

{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1*NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

[selfdoSomeThing:@"过1秒后执行"];

});

}

//6.调用多次

- (void)test6

{

dispatch_apply(10,globalQueue, ^(size_ttime) {

NSLog(@"%zu",time);

});

}

//7.只调用一次,一般在单例中使用

- (void)test7

{

staticdispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

NSLog(@"只调用一次");

});

}

//公共调用方法

- (void)doSomeThing:(NSString*)obj

{

sleep(1);

NSLog(@"%@",obj);

}

相关文章

  • GCD几种简单用法

    //1.同步顺序执行 - (void)test1 { dispatch_async(mainQueue, ^{ [...

  • iOS面试--GCD常见用法

    项目中常见的GCD用法有已下几种: 1.GCD栅栏函数2.GCD快速迭代(遍历)3.GCD队列组的使用 1.GCD...

  • GCD的几种特殊用法

    一、多个网络请求完成后如何执行下一步? 1.解法一: 使用GCD的dispatch_group_t 创建一个dis...

  • iOS开发之GCD续集

    上篇文章介绍了GCD的概念和在开发中经常使用的几种方式,这次再讲讲其他的几种用法。 一、任务的依赖关系 什么是依赖...

  • iOS-多线程

    iOS开发中常用的几种多线程方案,简单做个小结,方便日后查阅。 NSThead GCD NSOperation &...

  • GCD 几个简单用法

    自己创建队列中 并发+异步 -(void)test5 { dispatch_group_t group = dis...

  • gcd的简单用法(持续更新)

    简单介绍 1、gcd相关简单用法;内容简单,牛绕行! 2、方法直出,不涉及过多理论东西;如需理论,自行百度; 3、...

  • iOS开发-多线程学习

    iOS开发中常用的几种多线程方案,简单做个小结,方便日后查阅。 Pthreads NSThead GCD NSOp...

  • iOS 多线程面试题(GCD---队列)

    GCD---队列 iOS中,有GCD、NSOperation、NSThread等几种多线程技术方案。 而GCD共有...

  • dispatch_group和dispatch_barrier的

    前天被人问到使用GCD做依赖的用法,结果完全答不上来,下来之后就搜索了一下GCD的高级用法,发现自己对于GCD的掌...

网友评论

      本文标题:GCD几种简单用法

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