iOS多线程GCD NSThread的使用和理解
来源:互联网 发布:联通网络id 编辑:程序博客网 时间:2024/06/05 07:25
多线程的知识点:
使用情况:耗时,不知道什么会结束的情况,,需要与其他操作同步执行的操作,
遇到耗时的操作时,新建线程去执行,可以保证主线程流畅
主线程是其他线程的最终父线程 所有界面操作必须在主线程
后台线程无法操作ui和任何的用户操作响应
创建一个新的线程都会消耗一定的内存和CPU时间,控制好线程顺序
多个线程同时执行会出现抢夺资源的问题,要注意线程安全
主线程堆栈大小1M 第二个是512kb
[NSThread currentThread] 中的num=1为主线程
线程异步,无法控制先后顺序,,
以下写出多线程常用的两种方法,本人常用的是GCD,对于NSThread只是了解,对于Cocoa operation不是太了解(最后一种不做解释,有需要的自己查询)
GCD
GCD常用 dispatch_async 防止页面处理操作时出现卡顿,最常见的就是页面数据刷新,保证页面流畅的情况下更新数据, 这个方法比其他线程操作流程更简单,基于c语言的api ,结合block简化了线程的操作 代码框架如下:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//数据获取
dispatch_async(dispatch_get_main_queue(), ^{
//页面更新
});
});
如果queue的类型设置为串行的类型,线程会产生死锁
参数dispatch_queue_t queue队列生成
以上的线程的操作框架可以解决常见的基本的问题,可以直接使用,
如果对GCD有更深的需求和理解推荐几篇文章,各路大神已经总结的很好了。如果英文足够好可以看一下官方文档,其他几篇是对用法的总结
https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/doc/uid/TP40008079 GCD官方文档
https://en.wikipedia.org/wiki/Grand_Central_Dispatch GCD参考
http://www.cnblogs.com/madpanda/p/4694866.html GCD参考
http://blog.csdn.net/totogo2010/article/details/8016129 GCD参考
NSThread
优点:轻量级
缺点:需要自己管理线程生命周期,线程同步对数据的加锁会对系统造成压力
NSThread有两种直接创建方式
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
参数意义:
selector:线程执行方法,
target:selector消息发送的对象
argument:一般为nil
第一种方式会直接创建线程并且开始运行线程,第二种方式是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息
- iOS多线程GCD NSThread的使用和理解
- iOS多线程NSThread/GCD/NSOperation区别和使用
- iOS 多线程的实现与使用(NSThread, NSOperation, GCD)
- iOS多线程之NSThread、NSOperation和GCD
- iOS多线程NSThread,NSOperation和GCD详解
- NSThread多线程和GCD多线程
- iOS 多线程NSThread、NSOperation、GCD
- iOS多线程,NSThread ,NSOperationQueue ,GCD
- iOS多线程NSThread/NSOperation/GCD
- IOS多线程(NSThread,NSOperation,GCD)
- iOS 多线程NSThread-NSOperation-GCD
- iOS多线程 GCD NSoperation NSThread
- iOS多线程(NSThread、NSOperation、GCD)
- [多线程]NSThread, NSOperation 和 GCD
- iOS学习6_多线程NSThread和GCD
- 转载【iOS多线程NSThread,NSOperation和GCD详解】
- NSThread/NSOperation/GCD 三种多线程技术的理解
- iOS —— NSThread、NSOperation、GCD多线程的优缺点
- 关于mysql的sequence应用
- webbench安装篇
- C++之默认参数
- Ubuntu14.04下安装arm-linux-gcc错误提示
- 预留问题待解决
- iOS多线程GCD NSThread的使用和理解
- run time
- 杭电1212Big Number(同余定理)
- Samba文件共享服务安装篇
- 如何将linux一个程序作为一个服务
- 跟我学数据结构之栈和队列
- android:launchMode
- C#反射的运用
- 【SPOJ-WACHOVIA】Wachovia Bank【01背包】