1.进程:正在运行的程序,负责程序的内存分配,每一个进程都有自己独立的虚拟内存空间。(一个程序运行的动态过程)
2.线程:线程是进程中一个独立执行的路径(控制单元)一个进程至少包含一条线程,即主线程可以将耗时的执行路径(如网络请求)放在其他线程中执行。
3.创建线程的目的:为了开启一条新的执行路径,运行指定的代码,与主线程的代码实现同时执行。
.主线程的栈区
控件大小为1M,非常非常宝贵
.子线程的栈区
空间大小为512
.内存控件
多任务系统调度
.每一个应用程序由操作系统分配的短暂的时间片轮流使用和cpu,忧郁cpu对于每个时间片的处理速度非常快,用户感觉这些任务是同时进行的。
.并发:多个任务在同一段时间内同时执行,但在一个时间点,一个cpu只能执行一个任务。
多线程的概念说明
.优势
充分发挥多核处理器的优势,将不同线程任务分配给不同的处理器,真正进入“并行计算”状态
.弊端
新线程会消耗内存控件和cpu时间,线程太多会降低系统运行性能。
ios的三种线程技术
.NSThread
使用NSTHread对象建立线程非常方便,但是,管理多个线程非常困难,不推荐使用。
.CGD - Drand Central Dispatch
基于C语言的覅曾API,用BLOCK定义任务,使用起来非常灵活边界,提供了更多的控制力和操作队列中所不能使用的底层函数。
GCD的全局队列
为了方便多线程的设计,提供了一个全局队列,供所有app使用
获得全局队列
dispath_queue_t q =dispath_get_global_queue(DISPATH_QUEUE_PRIORITY_DEFAULT,0);
第一个参数为全局队列的优先级:
#define DISPATH_QUEUE_PRIORITY_HIGH 2
#define DISPATH_QUEUE_PRIORITY_DEFAULT 0
#define DISPATH_QUEUE_PRIORITY_LOW(-2)
#define DISPATH_QUEUE_PRIORITY_BACGROUNS INT16_MIN
第二个参数为保留参数