多线程


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS多线程编程 基本知识 1. 进程(process) 进程是指在系统中正在运行的一个应用程序,就是一段程序的执...
    陵无山阅读 6,122评论 1 14
  • 一.概述 1.基本概念 同步与异步的概念 同步 必须等待当前语句执行完毕,才可以执行下一个语句。 异步 不用等待当...
    Jt_Self阅读 495评论 0 1
  • 前言: 最近想回顾一下多线程问题,看到一篇文章写的非常详细,为了便于以后查找以及加深印象,就照着原文摘录了下文,原...
    FM_0138阅读 999评论 1 1
  • 从哪说起呢? 单纯讲多线程编程真的不知道从哪下嘴。。 不如我直接引用一个最简单的问题,以这个作为切入点好了 在ma...
    Mr_Baymax阅读 2,833评论 1 17
  • 九夏今宵再别离,终不见,我的三分之一年; 西湖九曲一人行,不知觉,黄历翻过十八遍。 表示只有一半 另一般还没有写完
    步耐阅读 204评论 0 1