线程初步理解

一、线程与进程

进程是资源分配的最小单元,线程是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更容易操作 如:限制最大并发数量、操作之间的依赖关系

你可能感兴趣的:(线程初步理解)