iOS开发中的多线程简介

一、进程和线程的区别

1.什么是进程?

      进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。

 比如:同时打开Xcode 和 Finder 系统就会分别启动2个进程,通过“活动监视器”可以查看Mac系统中所开启的进程。

2.什么是线程?

     1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)。线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行。

比如:使用百度网盘下载,使用QQ音乐播放器播放、都需要在线程中执行。

二、多线程的特点

1.什么是多线程?

   1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务或相同的任务。

比如:比如银行柜台有很多的服务窗口,每个窗口都有各自独立的存/取钱的能力。它们共同完成银行的存/取钱的功能。

2.多线程的原理

 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。

3.多线程的优缺点

3.1多线程的优点

   能适当提高程序的执行效率能适当提高资源利用率(CPU、内存利用率)。

 3.2多线程的缺点

    开启线程需要占用一定的内存空间 ,如果开启大量的线程,会占用大量的内存空间,降低程序的性能。

    线程越多,CPU在调度线程上的开销就越大

    程序设计更加复杂:比如线程之间的通信、多线程的数据共享

三、多线程在iOS开发中的应用

主线程: 

一个iOS程序运行后,默认会开启1条线程,称为“主线程”或“UI线程”。

主线程的主要作用:

    1.显示\刷新UI界面

    2.处理UI事件(比如点击事件、滚动事件、拖拽事件等)

注意: 

别将比较耗时的操作放到主线程中。耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验

四、iOS的三种多线程           

技术1. NSThread
   NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程)
   –优点:NSThread 比其他两个轻量级,使用简单
   –缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销。
 
技术2. NSOperation
    –不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
     NSOperation/NSOperationQueue 面向对象的线程技术
技术3. GCD
    GCD —— Grand Central Dispatch(派发) 是基于C语言的框架,可以充分利用多核,是苹果推荐使用的多线程技术
   –Grand Central Dispatch是由苹果开发的一个多核编程的解决方案。iOS4.0+才能使用,是替代NSThread, NSOperation的高效和强大的技术
技术2和技术3 是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题。

以上这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的,在项目中很多框架技术分别使用了不同多线程技术。

 

posted @ 2015-08-17 15:21  芽酷.学院  阅读(93)  评论(0)    收藏  举报