GCD相关

作者: Vijay_ | 来源:发表于2017-11-10 23:29 被阅读2次

创建队列

  • dispatch_queue_create("我是串行队列",DISPATCH_QUEUE_SERIAL); 异步执行时会另起一个线程执行该列队
  • dispatch_queue_create("我是并行队列",DISPATCH_QUEUE_CONCURRENT);异步执行时会另起多个线程同时执行列队中的多个任务

串行队列遵循FIFO先入先出的原则

注意:dispatch_async($queue,$block)并不是立马另起线程执行,而是把任务加入$queue列队,$queue另起线程的执行时间是随机的不与主线程冲突

尽量避免使用dispatch_sync,避免造成线程阻死,当派发任务到当前执行该dispatch_sync线程时会发生阻死,

    dispatch_sync(dispatch_get_main_queue(), ^{ });
  • dispatch_get_main_queue()获取主线程列队 主要用于UI刷新 通常不用于计算
  • dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)使用缺省值获取全局的并发列队

使用只写锁dispatch_barrier_async($自定义的并行列队,$block)

  • 当异步派发多个任务到自定义的并行列队时 使用dispatch_barrier_async会阻死当前列队 等待在它之前加入列队的任务完成后执行该任务 等待该任务执行完成后执行后面的任务
  • 注意:仅有自己创建的dispatch_queue_create("我是并行队列",DISPATCH_QUEUE_CONCURRENT)才有效 否则则与dispatch_async一样

快速迭代

//在某个列队执行10次任务  如果是串行列队则添加10个任务到改列队 如果是并行列队则开启10个线程分别执行这10个任务
dispatch_apply(10, queue, ^(size_t index) {
        NSLog(@"%zu",index);
    });

相关文章

  • GCD相关

    本文是自己写的总结GCD的Demo的结果。总结的过程中,参考了很多文章,文章底部有引用链接,在此感谢。多图,流量慎...

  • GCD相关

    运行结果 或者 或者 结语:dispatch_async 直接返回,具体执行顺序不确定。 运行结果 卡死、系统报错...

  • GCD相关

    五种优先级的不同使用场景 创建指定优先级的串行队列的方式: 以上内容参考链接 YYKit学习笔记

  • GCD相关

    创建队列 dispatch_queue_create("我是串行队列",DISPATCH_QUEUE_SERIAL...

  • GCD相关

    关于GCD我用的并不多,都是最基本的,具体如下:1.获取主线程,并执行: 注意,不要在主线程同步执行主线程,会崩溃...

  • OC多线程学习(二) - GCD

    本文内容: GCD相关概念 有关GCD的几道面试题 源码分析:队列和异步函数 GCD概念 GCD是Grand Ce...

  • 多线程相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 GCD NSOperation...

  • 06进阶之路-多线程管理

    1. GCD相关 学习链接 GCD 简介 (多核编程管理线程) GCD 任务和队列(同步和异步任务 并发和串行队列...

  • Grand Central Dispatch(GCD)编程基础

    本文介绍iOS 多线程中 GCD 的相关知识以及使用方法。通过本文可以了解到: GCD 简介 GCD 任务和队列 ...

  • iOS笔记--GCD相关知识

    GCD相关知识 1.GCD(Grand Central Dispatch)教程 2.GCD 深入理解:第一部分 备...

网友评论

      本文标题:GCD相关

      本文链接:https://www.haomeiwen.com/subject/efnimxtx.html