苹果开发 笔记(50)GCD
来源:互联网 发布:在淘宝怎么打开淘口令 编辑:程序博客网 时间:2024/06/05 15:16
今天看了一些GCD 多线程异步执行的API。这些API看起来向一个函数,有一些人已经封测了它,变得更加直观和便于理解。下面先记录一些先。
一些常用的API
//异步执行一个线程dispatch_async(queue,^{});//创建一个线程dispatch_queue_t queue = dispatch_queuq_create("com.example.queue",NULL);//获取主线程的方法dispatch_get_main_queue();//优先级获取方法dispath_queue_t queue = dispatch_get_global_queue(优先级,0);Dispatch Queue 的种类 有几种//优先级常量DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULTDISPATCH_QUEUE_PRIORITY_LOW DISPATCH_QUEUE_PRIORITY_BACKGROUND//延迟执行dispatch_afterdispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW,3ull*NSEC_PER_SEC);
处理线程的API,有涉及到暂停,挂起,恢复,取消,等待、延迟执行,线程组,同步和异步 ,死锁,只执行一次,等系列的概念出现。这些概念大部分是对于处理线程和任务。
dispatch_time_tdispatch_once_t dispatch_afterdispatch_group_waitdispatch_releasedispatch_barrier_asyncdispatch_async //异步dispatch_sync //同步dispatch_applydispatch_io_create
2015-7-19日 更新
在看gcd的时候,当中提及到线程过多时候,会引发内存问题。导致系统内存开销过多,效率降低。
同样多线程在更新相同一个资源的时候,会造成数据竞争的问题。
同步执行的时候容易出现死锁的问题,导致UI卡顿的问题发生。
系统提供了标准的Dispatch Queue
1.Main Dispatch Queue
2.Glocal Dispatch Queue
通过dispatch_get_global_queue 可以获取到不同等级的线程
通过dispatch_get_main_queue 获取主线程
2015-7-22日 更新
在书中看到一段关于刷新UI的做法,在后台执行循环,在主线程刷新UI。
dispatch_async(dispatch_get_global_queue(0,0),^{ NSInteger count = [numOfInstructions.text intValue]; for (int i = 0; i<count;i++) { dispatch_async(dispatch_get_main_queue(),^{ currentCount.text =[NSString stringWithFormat:@"instruction%d",i]; }); } });
2015-7-23日 更新
使用dispatch_once 构建一个单例
+(SingleManager) shareManager{ static dispatch_once_t once; static SingleManager *instance; dispatch_once(&once,^{ instance = [[self alloc]init]; } return instance;}
2015-7-24日 更新
使用dispatch_after 延迟 处理执行
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.labelText =@"拼命加载中";dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 10 *NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^{ [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; });
0 0
- 苹果开发 笔记(50)GCD
- 苹果开发 笔记(1)
- 苹果开发 笔记(2)
- 苹果开发 笔记(3)
- 苹果开发 笔记(4)
- 苹果开发 笔记(9)
- 苹果开发 笔记(10)
- 苹果开发 笔记(13)
- 苹果开发 笔记(14)
- 苹果开发 笔记(15)
- 苹果开发 笔记(16)
- 苹果开发 笔记(17)
- 苹果开发 笔记(18)
- 苹果开发 笔记(19)
- 苹果开发 笔记(20)
- 苹果开发 笔记(21)
- 苹果开发 笔记(22)
- 苹果开发 笔记(23)
- SQLite数据库
- [leetcode] Search for a Range
- 瀑布流接口的设计以及应用(五)
- 2015071501 - 望京地铁A口
- MFC 数据类型
- 苹果开发 笔记(50)GCD
- java基础第五天
- HttpServletResponse对象(一)
- 将string转换成char型的一般方法
- Excel Sheet Column Number (leetcode 171)
- [MEMO] Python argument passing
- Project Euler:Problem 67 Maximum path sum II
- android Spinner控件详解
- 简单的ftp服务器实现 (java)