多线程:单个程序中同时运行多个线程完成不同的任务,称为多线程. 作用:节约CUP时间,避免程序卡死
注意:只有主线程有直接修改UI的能力.
多线程技术的实现方式有很多,层次越高的抽象程度越高,使用也方便(下面多线程抽象层次从低到高):
NSThread:是相对轻量级的,但是需要管理线程的生命周期,同步,加锁问题,会导致一定的性能开销;
NSOperation: 是基于OC实现的,以面向对象的方式封装了需要执行的操作,不必关系线程管理,同步问题.
Grand Central Dispatch (简称GCD):提供了一些新特性,运行库来支持多核并行编程.
线程开销
线程的运行需要使用计算机的内存资源和CPU,这就产生了内存和性能开销;
并行,并发,串行
并行:一组程序按独立异步的速度执行,即两行代码同时执行,注意这里不是同一时间发生,并行只是任务执行的时间上有重叠罢了,要区别于并发;
并发:在同一时间段内,两个或多个程序同时开始执行;
串行:与并行相对,几个任务之间依次执行,执行任务的时间上没有重叠;
同步异步
同步是指两个任务之间的关系,一个任务需要等待另一个任务的反馈结果才能继续执行;
异步:与同步概念相对另一个任务不需要等待其他任务的反馈也可以继续执行;