GCD几种简单用法

//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);

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本篇博客共分以下几个模块来介绍GCD的相关内容: 多线程相关概念 多线程编程技术的优缺点比较? GCD中的三种队列...
    有梦想的老伯伯阅读 4,635评论 0 4
  • 谈到iOS多线程,一般都会谈到四种方式:pthread、NSThread、GCD和NSOperation。其中,苹...
    攻城狮GG阅读 2,444评论 0 3
  • iOS中GCD的使用小结 作者dullgrass 2015.11.20 09:41*字数 4996阅读 20199...
    DanDanC阅读 4,661评论 0 0
  • 1.下载maven3 2.解压 3.修改maven配置文件 4.配置环境变量 修改文件:vi /etc/profi...
    Rzg阅读 1,360评论 0 0
  • 公差在外,忙完手上的事情做上地铁,空闲间习惯性的翻看朋友圈,突然看到一个熟悉的头像旁边有一段关于“宝贝”的文字状态...
    简简糖阅读 3,097评论 0 0

友情链接更多精彩内容