• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
再来一杯咖啡
博客园    首页    新随笔    联系   管理    订阅  订阅

关于GCD中的队列

队列分为串行队列,并发队列,全局队列和主队列;

串行队列:一次只能安排一个任务。

dispatch_queue_t q = dispatch_queue_create("itcast",DISPATCH_QUEUE_SERIA); 

DISPATCH_QUEUE_SERIAL==NULL;

并发队列:一次可安排多个任务。

dispatch_queue_t q = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT);

全局队列:系统为了方便程序员开发使用,提供的一个队列,本质上就是并发队列;

dispatch_queue_t q = dispatch_get_global_queue(0, 0);

使用以下代码创建全局队列,就可以实现 iOS 7 & iOS 8的适配!

     dispatch_get_global_queue(0, 0);

主队列:专门用在主线程上调度任务的队列。

主线程上调度的任务,都必须在主线程上执行。

dispatch_queue_t q = dispatch_get_main_queue();

 

在GCD中是将”任务“添加到“队列”中,并指定任务的“执行方法”。

任务:用block封装的一个代码块。

任务:

同步任务: 这句代码没有执行完毕,就不能执行下一段代码。不需要开启线程

异步任务: 这句代码没有执行完毕,可以执行下一局代码,异步往往是开线程的代名词

小结:

1、开不开线程取决于执行任务的函数---同步任务不开线程,异步任务开启线程。

2、开多少个线程取决于队列(并发队列可已开启多条线程,串行队列只开启一条线程)前提是异步任务。

同步任务:不能开线程,一不小心还会死锁!有什么用处?

 作用:可以在并发队列中,挡住后续的任务,必须等待某一个任务完成,这种任务之间的关系-"依赖"

 

如果在 MRC 开发,针对自行创建的队列,需要release

 

 dispatch_release(q);

 

posted @ 2014-12-24 16:40  再来一杯咖啡  阅读(634)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3