IOS开发之多线程与GCD
2015-04-02 11:11
253 查看
线程的执行 :
下图明显可以看出,如果不开启多线程的话,程序先走runA方法在走runB,然后再回到runA,再走runC ,A-->B-->C。
如果runA在加载网络请求(比如加载图片),这样的话就会阻塞主线程,也就是说先加载完图片在走下面的方法,比如runC是一个点击事件,图片还没加载出来的时候,点击事件是不响应的,这需要什么方法取解决呢?这就得开启多线程了。
多线程的执行
开启多线程之后在走runB的同时也在走runC,这样就不会租塞主线程了。
多线程的基本概念:
1.每一个程序都有一个主线程,程序启动是创建(调用main函数来创建)。
2.主线程的生命周期是和应用程序绑定的,程序退出,主线程也就停止了。
3.多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的使用率,防止主线程阻塞。
4.任何有可能阻塞主线程的任务不要在主线程中执行(比如执行网络)。
多线程使用的注意
1.线程使用不是无节制的,iso中的主线程的堆栈大小是1M,从第二个线程开始是512KB,这些数值不能通过编译器开关或线程API函数更改。
2.只有主线程有直接修改UI的能力(比如要设置image,得先回到主线程中设置)。
子线程的内存管理:需要加入自动释放池中
IOS中的三种多线程技术
1.pthread是POISIX线程的API,是C语言的技术,可以直接操作线程。
2.NSThread是每个NSThread对象对应一个线程,量级较轻,是对pthread的抽象。
3.GCD(Grand Central Dispatch)是基于C语言的框架,使用队列管理线程,可以充分利用多核。
4.NSOperation/NSOperationQueue是面向对象的线程技术,是对GCD的抽象。
三种多线程的技术对比
一:NSThread
1.优点:NSThread比其他两个轻量级,使用简单。
2.缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒,线程的同步对线程的加锁会有一定的系统开销。
二:NSOperation
1.不需要关心线程管理,数据同步的事情,可以把精力放在自己需要操作的执行上
2.NSOperation是面向对象的
三:GCD
1.是由苹果开发的一个多核编程的解决方案,ios4.0后才可以用,是替代以上两种的高级和强大的技术。
2.是基于C语言的
下图明显可以看出,如果不开启多线程的话,程序先走runA方法在走runB,然后再回到runA,再走runC ,A-->B-->C。
如果runA在加载网络请求(比如加载图片),这样的话就会阻塞主线程,也就是说先加载完图片在走下面的方法,比如runC是一个点击事件,图片还没加载出来的时候,点击事件是不响应的,这需要什么方法取解决呢?这就得开启多线程了。
多线程的执行
开启多线程之后在走runB的同时也在走runC,这样就不会租塞主线程了。
多线程的基本概念:
1.每一个程序都有一个主线程,程序启动是创建(调用main函数来创建)。
2.主线程的生命周期是和应用程序绑定的,程序退出,主线程也就停止了。
3.多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的使用率,防止主线程阻塞。
4.任何有可能阻塞主线程的任务不要在主线程中执行(比如执行网络)。
多线程使用的注意
1.线程使用不是无节制的,iso中的主线程的堆栈大小是1M,从第二个线程开始是512KB,这些数值不能通过编译器开关或线程API函数更改。
2.只有主线程有直接修改UI的能力(比如要设置image,得先回到主线程中设置)。
子线程的内存管理:需要加入自动释放池中
IOS中的三种多线程技术
1.pthread是POISIX线程的API,是C语言的技术,可以直接操作线程。
2.NSThread是每个NSThread对象对应一个线程,量级较轻,是对pthread的抽象。
3.GCD(Grand Central Dispatch)是基于C语言的框架,使用队列管理线程,可以充分利用多核。
4.NSOperation/NSOperationQueue是面向对象的线程技术,是对GCD的抽象。
三种多线程的技术对比
一:NSThread
1.优点:NSThread比其他两个轻量级,使用简单。
2.缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒,线程的同步对线程的加锁会有一定的系统开销。
二:NSOperation
1.不需要关心线程管理,数据同步的事情,可以把精力放在自己需要操作的执行上
2.NSOperation是面向对象的
三:GCD
1.是由苹果开发的一个多核编程的解决方案,ios4.0后才可以用,是替代以上两种的高级和强大的技术。
2.是基于C语言的
相关文章推荐
- iOS多线程开发(五)---GCD(Grand Central Dispatch)
- iOS 开发中,多线程编程GCD的常用方法总结
- IOS开发之多线程与GCD
- iOS开发 多线程之”GCD“
- iOS开发之多线程——NSThread、NSOperation、GCD
- iOS多线程开发(五)---GCD(二)block && Grand Central Dispatch
- iOS开发中GCD在多线程方面的理解
- iOS 开发多线程 - GCD
- iOS开发中的gcd多线程tips
- IOS多线程开发之GCD
- iOS开发——多线程、NSThread、gcd、线程间通信
- iOS开发 多线程GCD
- iOS多线程开发小demo7 GCD队列组
- ios开发:GCD多线程
- IOS开发之多线程GCD和NSOperationQueue,NSOpration
- IOS多线程开发之GCD
- iOS开发中GCD在多线程方面的理解
- iOS开发中GCD在多线程方面的理解
- 【iOS开发-多线程】使用GCD创建多线程(iOS常用技术)
- 多线程之GCD(一) 分类: ios开发 2015-04-17 17:58 357人阅读 评论(0) 收藏