GCD线程的应用
来源:互联网 发布:跟兄弟连学php老版视频 编辑:程序博客网 时间:2024/06/08 04:16
GCD的创建 看了视频从大神的代码里面复制进来 先用OC版的 首先是串行队列,是一条一条语句执行的 而并发队列 你并不知道执行的先后顺序是咋样的 首先是要创界队列 随后在队列里面去执行线程
//构建串行队列-(void)serialQueue{ //创建串行的队列 GCDQueue *queue = [[GCDQueue alloc]initSerial]; //执行串行队列中的语句 一句一句的执行 [queue execute:^{ NSLog(@"1"); }]; [queue execute:^{ NSLog(@"2"); }];}//创建并发队列-(void)initConctet{ GCDQueue *queue = [[GCDQueue alloc]initConcurrent]; [queue execute:^{ NSLog(@"1"); }]; [queue execute:^{ NSLog(@"2"); }];
延时受阻 就是在多少秒以后 开始执行这个线程 GCD线程的相对优势是代码的创建相对简单 如下
[GCDQueue executeInGlobalQueue:^{ NSLog(@"2"); } afterDelaySecs:(2.0f)];而用NSThead的好处是时间更加的精确
[self performSelector:@selector(print) withObject:self afterDelay:2.0f];
-(void)print{ NSLog(@"3");}也可以用一个全局函数进行销毁 而GCD不能进行销毁
[NSObject cancelPreviousPerformRequestsWithTarget:self];GCD线程组的作用
//GCD线程组 当线程1和线程2执行完后,再去执行线程3 首先创建GCDGroup GCDGroup *group = [[GCDGroup alloc]init]; //创建线程 GCDQueue *queue = [[GCDQueue alloc]initConcurrent]; [queue execute:^{ sleep(1); NSLog(@"1"); } inGroup:group]; [queue execute:^{ sleep(3); NSLog(@"2"); } inGroup:group]; //第三个线程要监听 当线程1和线程2都完成后 才执行线程3 [queue notify:^{ NSLog(@"3"); } inGroup:group];
GCD定时器 就是每个几秒会执行这个函数
[self runNSTimer]; [self runGCDTimer];}//使用GCDTimer的例子-(void)runGCDTimer{ GCDTimer *GCDtimer = [[GCDTimer alloc]initInQueue:[GCDQueue mainQueue]]; [GCDtimer event:^{ NSLog(@"1"); //注意这里的时间是秒 } timeInterval:NSEC_PER_SEC]; //执行GDCTimer [GCDtimer start];}//使用NSTimer的例子-(void)runNSTimer{ self.NStimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(print) userInfo:nil repeats:true];}-(void)print{ NSLog(@"2");}
信号量的应用
//信号量的使用 创建信号量 GCDSemaphore *semaphore = [[GCDSemaphore alloc]init]; //在等待线程1执行完后,才执行线程2,这个时候便可以用信号,wait和发送信号是一对出现的 [GCDQueue executeInGlobalQueue:^{ NSLog(@"1"); //执行完后发送 [semaphore signal]; }]; [GCDQueue executeInGlobalQueue:^{ //等待信号发送过来 [semaphore wait]; NSLog(@"2"); }]; }
0 0
- GCD 线程的应用
- GCD线程的应用
- GCD的应用 及线程的一些概念
- iOS经典讲解之多线程GCD的应用
- GCD的应用
- GCD常用的应用
- GCD线程之间的通信
- IOS GCD线程的使用
- GCD的线程间通信
- GCD的一些小应用
- GCD 多线程的简单应用
- GCD的一些应用知识点
- GCD 线程
- GCD 线程
- GCD线程
- GCD线程
- GCD线程
- 线程GCD
- android下载网络数据的几种方法
- 动态加载jar文件
- 关于coursera上Learning How to Learn课程的读书笔记
- Light OJ 1158 Anagram Division(状压+数位DP)
- 干货!谷歌推荐的技术能力提升指南
- GCD线程的应用
- mysql 插入效率问题
- 二级指针
- 页面居中总结
- 2016 MCM/ICM E 题渣渣论文
- 编程的一些思考
- 步进电机基础知识和基本应用
- 面试笔试杂项积累-leetcode 231-235
- django创建数据库的坑