一、线程与进程
进程是资源分配的最小单元,线程是CPU调度的基本单位。一个进程奔溃之后在保护模式下不会对其他进程产生影响,一个线程死掉会导致整个进程死掉。
1、一个程序至少有一个进程,一个进程至少有一个线程。
2、进程之间很难共享资源,同一个进程中不同的线程资源共享。
二、线程理解
线程分为同步和异步、队列分为串行、并行(并发)(OC中还有主队列、全局队列)。
总线程数<=CPU数量:并行运行
总线程数>CPU数:并发运行
并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
三、线程的几种方式
1、NSThread
· 建立线程简单快捷,可以直接操作线程对象
· 管理多个线程困难,因为要管理他的生命周期
· 平时很少使用常用到的是 [NSThread currentThread]获取当前线程。
2、GCD--Grand Central Dispatch
· 基于C语言的底层API
· 使用方便、灵活(常用)
3、NSOperation/NSOprationqueue
· 基于GCD实现的一套Objective-C 的API
· 面向对象的线程技术,使用时操作的是他的子类如: NSInvocationOperation, NSBlockOperation
· 比GCD更容易操作 如:限制最大并发数量、操作之间的依赖关系