前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >GCD 串行队列

GCD 串行队列

作者头像
CC老师
发布2023-03-23 19:25:18
发布2023-03-23 19:25:18
3600
举报
实例demo 003--GCD演示
  • GCD核心概念:将任务添加对象,指定任务执行的方法
  • 任务 使用block封装 block就是一个提前准备好的代码块,在需要的时候执行
  • 队列(负责调度任务) 串行:一个接一个的调度任务 并发:可以同时调度多个任务
  • 任务执行函数(任务都需要在线程中执行!!) 同步执行:当前指令不完成,不会执行下一个指令 异步执行:当前指令不完成,不会等待,继续执行下一条指令
串行队列,同步(单)任务

画图解释

  • 同步和异步,决定2件事。从队列里拿任务,从线程池拿线程;
  • 同步任务是不会去线程池拿线程的。==能理解的打个“1”==
  • 串行队列:决定是否去拿任务,串行队列必须一个一个执行,即便是多线程,也不能给你任务;
  • 并发队列:会拿出多个任务,同步任务的话,你有任务,没有线程。

总结怎么拿任务,看是串行、并行 怎么拿队列,看是同步、异步

线程池的线程数,是由系统决定。你的任务加入队列后,是否能被CPU调度,看CPU

串行队列,同步(多)任务

问题 1.开启线程吗? 不会开启线程

2.顺序执行? 顺序执行,只有1个线程,任务是按照队列顺序来的。所以是顺序执行

串行队列,异步任务

问题 1.开启几条线程吗? 开启1条线程

2.顺序执行? 顺序执行,只有1个线程,任务是按照队列顺序来的。所以是顺序执行

只要是异步就可以获取多个线程,但是串行队列,任务没有完成,不能拿任务。所以只会获取1个线程,因为加另外一个线程,没有任务。

3.come here什么时候执行? 答案:一上来就执行!有可能有交替的,插在中间。子线程和主线程谁先执行任务,是不能确定的。因为这是CPU调度的。come Here在主线程

4.在循环主线程里加入一句打印i

答案: 会先打印“i”,再执行一次异步线程任务,接着在打印“i”,在执行异步线程,交替执行。它们分属2条线程,主线程和异步线程。但是"come here"必须是i=9,才会执行。因为打印“i”占用了主线程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 逻辑iOS技术号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实例demo 003--GCD演示
  • 串行队列,同步(单)任务
  • 串行队列,同步(多)任务
  • 串行队列,异步任务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档