1.多线程:Cpu— 4核8线程,就好像几条跑道一样, 同一时间可以跑8辆车.运输的效率自然就高了
2.多线程实现的方式
能力排序pThread<NSThread<GCD<NSOperation
pThread 纯C 可以跨平台. 说明兼容性好, 缺点 对于某个平台 优化型不强
NSThread 苹果早期的多线程技术- 已经被淘汰了
GCD —通常是dispatch开头的方法, C语法+block语法,苹果开发用来取代NSThread 是现在最流行的 也是最主要
NSOperation 就是对GCD的一个封装, 把C语法封装成了OC语法. 额外的添加了5个特殊功能
3.在GCD和NSOpearation之间如何抉择?
GCD的运行效率比NSOperation高一点点,除非用到 特殊的5个功能以外,其他时间没有太强的要求
4.CGD
同步: 同与主线程, 在主线程上运行 sync
异步: 异于主线程, 在非主线程上运行 async
并行: 多个任务同时进行,即多个任务在不同的线程运行 concurrent
串行: 多个任务在一个线程上排队运行,有序的 serial
异步串行: i 和 j 打印, i打印完毕再打印j, 在同一个线程
异步并行: i和j 的打印是在不同线程里执行的,是无序的. 这个线程肯定不是主线程----最常用的,效率最高
同步串行: 线程是主线程, 任务执行是有序的(不常用)
//我们正常写代码都是同步串行, 当从分线程中回到主线程,刷新UI的时候 可以调用
同步并行: 同于 同步串行. 因为同步表示必须在主线程中运行, 并行 有需要的话,可以开分线程----遵循同步的规则,只能在主线程中
dispatch_queue_create 创建队列
dispatch_async 异步执行
dispatch_sync 同步执行
5.线程锁—保证线程安全
当一个资源被使用的时候,别的线程不能够使用同一个资源.这就是把当前使用的资源加锁.
使用 NSLock加锁, 常用
使用@synchronized加锁 —效率没有NSLock高, 不常用
6.总结
同步就是主线程执行 异步就是分线程执行 切记