多核心的意思是1个CPU有多个核心,每个核心是靠CPU的总线来关联的。多处理器是有多个CPU,多CPU的通信是靠主机来关联的。进程相当于程序,1个进程里面可能会有多个线程。单核处理器只有1个cpu,在处理多线程操作的时候,1个CPU的会在不同的线程中来回切换,切换方式由操作系统来计算,多个线程的运行并不是异步的,只是切换非常快给人的感觉是异步的,程序中线程越多并不一定就越快,线程之间的切换是耗时的。
串行队列:
任务按在队列里的先后顺序执行,先进先出(FIFO),一个任务执行完成后,才会执行下一个任务(实际实现是在一个线程中完成所有任务,这个线程可能是主线程,也可能是子线程)。
并发队列:任务无序同时执行(实际实现是在多个子线程中执行)。
全局队列:本质是一个并发队列,由系统提供,方便编程,可以不用创建就直接使用
主队列:主队列是GCD自带的一种特殊串行队列,主队列里面的任务默认都是在主线程中进行
特点:如果主队列发现当前主线程中有任务在进行,那么会等待主线程空闲了之后才会调用主队列里面的任务。
第一种造成了死锁,主线程就停了,主队列里面的两个任务相互等待
NSOperation与GCD有什么优势?
NSOperation 特点:1.可以添加任务依赖 2.可以控制任务状态 3.可以设置最大并打量
GCD特点:1.可以通过dispatch_barrier_async实现多读单写 2.通过dispath_group实现几个任务完成再去执行下一个任务。