要学IOS多线程先理解:任务、串行队列、并行队列、同步、异步

任务:即操作,你想要干什么,说白了就是一段代码,在 GCD 中就是一个 Block,所以添加任务十分方便。任务有两种执行方式:同步执行异步执行,他们之间的区别是是否会创建新的线程。

队列:用于存放任务。一共有两种队列,串行队列并行队列

串行队列串行队列中的任务会根据队列的定义 FIFO 的执行,一个接一个的先进先出的进行执行。

注解:放到串行队列的任务,GCD 会FIFO(先进先出)地取出来一个,执行一个,然后取下一个,这样一个一个的执行。

并行队列:并行队列中的任务FIFO取出来会放到另一个线程去执行

注解:放到并行队列的任务,GCD 也会 FIFO的取出来,但不同的是,它取出来一个就会放到别的线程,然后再取出来一个又放到另一个的线程。这样由于取的动作很快,忽略不计,看起来,所有的任务都是一起执行的。不过需要注意,GCD 会根据系统资源控制并行的数量,所以如果任务很多,它并不会让所有任务同时执行。

同步SYNC:阻塞当前线程让任务完后该线程结束

异步ASYNC:不阻塞当前线程任务完成也线程也结束

这里说的并不准确,同步(sync)和异步(async)的主要区别在于会不会阻塞当前线程,直到Block中的任务执行完毕!

如果是同步(sync)操作,它会阻塞当前线程并等待Block中的任务执行完毕,然后当前线程才会继续往下运行。

如果是异步(async)操作,当前线程会直接往下执行,它不会阻塞当前线程。

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

推荐阅读更多精彩内容

  • 从哪说起呢? 单纯讲多线程编程真的不知道从哪下嘴。。 不如我直接引用一个最简单的问题,以这个作为切入点好了 在ma...
    Mr_Baymax阅读 2,831评论 1 17
  • 多线程 在iOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用...
    郭豪豪阅读 2,617评论 0 4
  • 1. GCD简介 iOS开发中多线程的API主要有pthread,NSThread,NSOperation和GCD...
    安东_Ace阅读 1,300评论 0 6
  • 多线程基本概念 单核CPU,同一时间cpu只能处理1个线程,只有1个线程在执行 。多线程同时执行:是CPU快速的在...
    WeiHing阅读 726评论 1 5
  • @document是一种CSS资源匹配规则 主要有4个函数方法: url(),匹配整个URL; url-prefi...
    li4065阅读 2,546评论 0 0