IOS开发之多线程与GCD

线程的执行 :

下图明显可以看出,如果不开启多线程的话,程序先走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语言的


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值