美文网首页
GCD多线程 (以前的代码)

GCD多线程 (以前的代码)

作者: sll_ | 来源:发表于2017-09-15 15:11 被阅读4次

//核心概念:

//任务:block

//队列:把任务放到队列里面,队列先进先出的原则,

//串行队列:顺序,一个一个执行(必须一个任务执行完了,才能从队列里面取出下一个任务)

//并发队列:同时,同时执行很多个任务(可以同时取出很多个任务,只要有线程去执行)

//同步sync:不会开新线程

//异步async:会开新线程,多线程的代名词

//串行队列同步执行:不开线程,在原来线程里面一个一个顺序执行

//串行队列异步执行:开一条线程,在这个新线程里面一个一个顺序执行

//并发队列异步执行:开多个线程,并发执行(不一定是一个一个)执行

//并发队列同步执行:不开线程,在原来线程里面一个一个顺序执行

//阶段性总结:

//1.开不开线程,由执行任务方法决定,同步不开线程,异步肯定开线程

//2.开多少线程,由队列决定,串行最多开一个线程,并发可以开多个线程。具体开多少个,有GCD底层决定,程序猿不能控制

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {

[selfgcdTest7];

}

#pragma GCDG演练

-(void)gcdTest7{

dispatch_group_tgroup=dispatch_group_create();

dispatch_queue_tqueue=dispatch_get_global_queue(0,0);

dispatch_group_async(group, queue,^{

NSLog(@"bbb%@",[NSThreadcurrentThread]);

});

dispatch_group_async(group, queue,^{

NSLog(@"cc%@",[NSThreadcurrentThread]);

});

dispatch_group_async(group, queue,^{

NSLog(@"ddd%@",[NSThreadcurrentThread]);

});

dispatch_group_notify(group, queue,^{

NSLog(@"gaodig%@",[NSThreadcurrentThread]);

});

//最常用的在主线程中更新UI

dispatch_group_notify(group,dispatch_get_main_queue(),^{

;

});

}

-(void)gcdTest4

{

//1.并行队列

dispatch_queue_tqueue =dispatch_queue_create("cz",DISPATCH_QUEUE_CONCURRENT);

// 2.同步执行任务

for(inti =0; i <10; i++) {

dispatch_sync(queue,^{

NSLog(@"%@ %d", [NSThreadcurrentThread], i);

});

}

}

-(void)gcdTest3

{

//1.并行队列

dispatch_queue_tqueue =dispatch_queue_create("cz",DISPATCH_QUEUE_CONCURRENT);

NSLog(@"xx");

// 2.异步执行任务

for(inti =0; i <10; i++) {

NSLog(@"aaa");

dispatch_async(queue,^{

NSLog(@"%@ %d", [NSThreadcurrentThread], i);

});

NSLog(@"bbb");

}

NSLog(@"结束");

}

-(void)gcdTest2

{

// 1.串行队列

//下面两种写法是一样的

//    dispatch_queue_t queue= dispatch_queue_create("itcast",DISPATCH_QUEUE_SERIAL);

dispatch_queue_tqueue =dispatch_queue_create("itcast",NULL);

// 2.异步执行

for(inti =0; i <10; i++) {

dispatch_async(queue,^{

NSLog(@"%@ %d", [NSThreadcurrentThread], i);

});

}

}

-(void)gcdTest1

{

// 1.创建一个串行队列

//参数:1.队列标签2.队列的属性

dispatch_queue_tqueue =dispatch_queue_create("itcast",DISPATCH_QUEUE_SERIAL);

NSLog(@"开始!!");

// 2.同步执行任务

//一般只要使用”同步“执行,串行队列对添加的同步任务,会立马执行

dispatch_sync(queue,^{

NSLog(@"%@",[NSThreadcurrentThread]);

});

NSLog(@"完成!!");

}

//主队列异步

-(void)gcdTest6{

dispatch_queue_tqueue=dispatch_get_main_queue();

NSLog(@"xx");

// 2.异步执行任务

for(inti =0; i <10; i++) {

NSLog(@"aaa");

dispatch_async(queue,^{

NSLog(@"%@ %d", [NSThreadcurrentThread], i);

});

NSLog(@"bbb");

}

NSLog(@"结束");

}

相关文章

  • GCD多线程 (以前的代码)

    //核心概念: //任务:block //队列:把任务放到队列里面,队列先进先出的原则, //串行队列:顺序,一个...

  • 7.3 多线程-GCD

    多线程-GCD 多线程-GCD-串行并行 多线程-GCD.png GCD-线程的通讯、延时操作、定时器 GCD-线...

  • 小码哥底层原理笔记:多线程

    多线程方案: 比较常用的是GCD,是直接用Block去写代码的。使代码比较紧凑。 GCD常用函数 同步执行任务:d...

  • iOS多线程-GCD 附带GCD相关代码

    多线程学习笔记-GCD 我把这篇文章所用到的代码总结到这里->GCD项目总结下载地址-GCD-wxk可以下载参考 ...

  • iOS多线程:『GCD』详尽总结

    iOS多线程:『GCD』详尽总结 iOS多线程:『GCD』详尽总结

  • 2019-11-19 ios多线程之GCD(一)

    GCD是iOS 实现多线程编程的一种技术,使用block组织代码,高效简洁。区别于NSThread,GCD实现了高...

  • iOS多线程GCD使用及总结

    这篇文章对iOS的多线程技术GCD的常用方法做了总结另一篇NSOperation在这里本文代码 - GCD: 简介...

  • gcd多线程任务与队列组合分析

    关于gcd中串行队列并行队列,以及同步任务和异步任务的花式嵌套,分析执行结果 多线程调试常用代码: gcd的任务 ...

  • 多线程之GCD

    线程、多线程 多线程存在的问题 为什么使用多线程? GCD GCD 的 API 介绍Dispatch QueueD...

  • iOS面试之多线程模块

    多线程 多线程内容如下: GCD NSOperation NSThread 多线程与锁 1.GCD 同步/异步和串...

网友评论

      本文标题:GCD多线程 (以前的代码)

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