iOS - 多线程-GCD-队列组

文章目录

  • iOS - 多线程-GCD-队列组
    • 1. 队列组
      • 1.1 基本使用步骤

iOS - 多线程-GCD-队列组

开发过程中,有时候想实现这样的效果

  • 多个任务并发执行
  • 所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI)

1. 队列组

可以使用GCD的队列组来实现

1.1 基本使用步骤

  • 创建队列组dispatch_group_create()
  • 创建队列dispatch_queue_create
  • 执行任务
  • 监听任务完成dispatch_group_notify
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_queue_create("myqueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 1");}
});dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 2");}
});dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 3");}
});dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 4 ----------");
});

执行结果:

任务 123并发执行,完成后执行任务4

可以使用多个dispatch_group_notify,达到这样的效果:任务123并发执行完成后,再并发执行任务45

dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 4 ----------");
});dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 5 ----------");
});

@oubijiexi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/643600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字逻辑电路基础-有限状态机

文章目录 一、有限状态机基本结构二、verilog写一个基础有限状态机(moore型状态机)三、完整代码一、有限状态机基本结构 本文主要介绍使用verilog编写有限状态机FSM(finite state machine),它主要由三部分组成,下一状态逻辑电路,当前状态时序逻辑电路和输出逻辑电路。 有…

Xinlinx FPGA内的存储器BRAM全解

目录 一、总体概述1.7系列FPGA的BRAM特点2.资源情况 二、BRAM分类1.单端口RAM2.简单双端口RAM3.真双端口RAM 三、BRAM的读写1、Primitives Output Registers读操作注意事项2.三种写数据模式&#xff08;1&#xff09;Write_First&#xff08;2&#xff09;Read_First&#xff0…

java初级面试题

并发 创建线程的方式 创建线程总共有四种方式 1、继承Thread类 重写run方法&#xff08;执行的代码块&#xff09; 使用方法&#xff1a;创建继承后的对象&#xff0c;调用start方法 2、实现runnable接口 重新run方法 使用方法&#xff1a;创建一个Thread对象 后创建实…

模型部署的艺术:让深度学习模型跃入生产现实

模型部署的艺术&#xff1a;让深度学习模型跃入生产现实 1 引言 1.1 部署的意义&#xff1a;为何部署是项目成功的关键 在深度学习项目的生命周期中&#xff0c;模型的部署是其成败的关键之一。通常&#xff0c;一个模型从概念构思、数据收集、训练到优化&#xff0c;最终目的…

MySQL常见的约束

什么是约束&#xff1f; 限制&#xff0c;限制我们表中的数据&#xff0c;保证添加到数据表中的数据准确和可靠性&#xff01;凡是不符合约束的数据&#xff0c;插入时就会失败&#xff0c;插入不进去的&#xff01; 比如&#xff1a;学生信息表中&#xff0c;学号就会约束不…

【Node.js】03 —— HTTP 模块探索

&#x1f31f;Node.js之HTTP模块探索✨ &#x1f31f;引言 在网络编程中&#xff0c;HTTP协议无处不在。在Node.js的世界里&#xff0c;我们可以通过内置的http模块来轻松创建HTTP服务器和客户端&#xff0c;实现数据的接收和发送。今天就让我们一起打开这扇门&#xff0c;探索…

SPI Flash and External SPI RAM(基于ESP32)

主要参考资料&#xff1a; 乐鑫ESP-IDF资料SPI Flash API: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-reference/peripherals/spi_flash/index.html 乐鑫ESP-IDF资料SPI Flash and External SPI RAM Configuration: https://docs.espressif.com/pro…

图像修复技术在AI去衣中的深度应用与探索

随着人工智能技术的飞速发展&#xff0c;图像修复技术在AI去衣领域的应用日益广泛。本文旨在深入探讨图像修复技术在AI去衣中的核心作用&#xff0c;并介绍一些专业的技术名词及其深刻解释。 一、引言 图像修复技术作为计算机视觉领域的重要分支&#xff0c;旨在通过算法对图…

程序员学CFA——数量分析方法(四)

数量分析方法&#xff08;四&#xff09; 常见概率分布基本概念离散型随机变量与连续型随机变量离散型随机变量连续型随机变量 分布函数概率密度函数&#xff08;PDF&#xff09;累积分布函数&#xff08;CDF&#xff09; 离散分布离散均匀分布伯努利分布二项分布定义股价二叉树…

Php-WebView 现代跨平台 GUI分享

GitHub :php-webview 一个用于 C/C 的小型跨平台 Web 视图库&#xff0c;用于构建现代跨平台 GUI。 该项目的目标是为最广泛使用的平台创建一个通用的 HTML5 UI 抽象层。 它支持双向 JavaScript 绑定&#xff08;从 C/C 调用 JavaScript 和从 JavaScript 调用 C/C&#xff09;。…

自然语言处理: 第二十八章大模型基底之llama3

项目地址: meta-llama/llama3: The official Meta Llama 3 GitHub site 前言 LLaMa系列一直是人们关注的焦点&#xff0c;Meta在4月18日发布了其最新大型语言模型 LLaMA 3。该模型将被集成到其虚拟助手Meta AI中。Meta自称8B和70B的LLaMA 3是当今 8B 和 70B 参数规模的最佳模…

Opencv_10_自带颜色表操作

void color_style(Mat& image); Opencv_10_自带颜色表操作&#xff1a; void ColorInvert::color_style(Mat& image) { int colormap[] { COLORMAP_AUTUMN, COLORMAP_BONE , COLORMAP_JET , COLORMAP_WINTER, COLORMAP_RAINBOW , COLOR…