多线程

2019-03-21  本文已影响0人  0fbf551ff6fb


多核心的意思是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实现几个任务完成再去执行下一个任务。

上一篇 下一篇

猜你喜欢

热点阅读