07-掌握-GCD基本使用

【iOS】—— 深入了解GCD 百度:Grand Central Dispatch(GCD) 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务。在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。苹果官方:Grand Central Dispatch(GCD) 是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级实现。... 阅读详情

创建并发队列(一般很少用到)

/*
 第一个参数:C语言字符串,标签:不安全的指针[-128,127]
 第二个参数:dispatch_queue_attr_t类或子类

 DISPATCH_QUEUE_CONCURRENT:并发队列
 DISPATCH_QUEUE_SERIAL:串行队列

 dispatch_queue_create(label: UnsafePointer<Int8>, _ attr: dispatch_queue_attr_t!) -> dispatch_queue_t!
*/
let queue =  dispatch_queue_create("com.xxx.www", nil);

为什么这里可以写nil

//OC代码中 有一段源码 
#define DISPATCH_QUEUE_SERIAL NULL

获得全局并发队列(常用)

/*
 获得全局并发队列
 dispatch_get_global_queue(identifier: Int, _ flags: UInt) -> dispatch_queue_t!

 *推荐使用的服务质量类值来确定
 *知名全球并发队列:
 *——QOS_CLASS_USER_INTERACTIVE
 *——QOS_CLASS_USER_INITIATED
 *——QOS_CLASS_DEFAULT
 *——QOS_CLASS_UTILITY
 *——QOS_CLASS_BACKGROUND
 *
 *全球并发队列可能仍然被他们的优先级,
 *以下哪一个QOS映射到类:
 DISPATCH_QUEUE_PRIORITY_HIGH:QOS_CLASS_USER_INITIATED
 DISPATCH_QUEUE_PRIORITY_DEFAULT     :QOS_CLASS_DEFAULT
 DISPATCH_QUEUE_PRIORITY_LOW :QOS_CLASS_UTILITY
 DISPATCH_QUEUE_PRIORITY_BACKGROUND  :QOS_CLASS_BACKGROUND

 flags 永远传0
 */
let queue = dispatch_get_global_queue(0, 0)

为什么这里可以写0

//OC代码中 有一段源码 
 #define DISPATCH_QUEUE_PRIORITY_HIGH 2
 #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
 #define DISPATCH_QUEUE_PRIORITY_LOW (-2)
 #define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN

获得主队列

let queue = dispatch_get_main_queue()

函数

同步函数

 /*
  同步函数
  dispatch_sync(queue: dispatch_queue_t, _ block: dispatch_block_t)
  第一个参数:队列
  第二个参数:block,在里面封装任务
  */
 dispatch_sync(queue) {
     print("sync_download")
 }

异步函数

 /*
  异步函数
  dispatch_async(queue: dispatch_queue_t, _ block: dispatch_block_t)
  第一个参数:队列
  第二个参数:block,在里面封装任务
  */
 dispatch_async(queue) {
     print("async_download")
 }
工程师必看:如何用MINITAB快速计算传感器寿命(附详细步骤) 本文为工程师提供了使用MINITAB软件快速计算传感器寿命的详细实战指南。文章重点阐述了如何通过数据预处理、回归分析拟合阿伦尼斯模型,并最终预测平均寿命与置信区间,帮助工程师高效处理加速寿命试验数据,提升可靠性分析工作的准确性与效率。 阅读详情

相关推荐

Hiblup入门指南:从下载到基础应用

本文是Hiblup软件的入门指南,详细介绍了这款遗传评估工具的核心功能与价值。Hiblup能整合系谱、基因组和表型数据,高效计算估计育种值,助力动物育种与植物遗传改良研究。文章从软件下载安装、数据格式准备,到运行系谱BLUP和基因组BLUP分析,提供了清晰的实战步骤与命令示例,帮助用户快速上手并应用于实际科研与育种工作。

weixin_29209825的博客 494

7-65 辗转相除法求最大公约数 (10分)

知识点 辗转相除法 int t; while(b!=0) { t=a%b; a=b; b=t; } printf("gcd=%d",a); 代码 #include<iostream> using namespace std; int main() { int a,b;cin>>a; getchar();cin>>b; int...

Rita的博客 740

如何适配自定义激光雷达数据到LIO-SAM:解决ring和time参数缺失问题

本文详细解析了如何将非标准激光雷达(如速腾、Livox)适配到LIO-SAM框架中,重点解决ring和time参数缺失问题。提供了从源码修改到通用适配中间件的多层级解决方案,并包含实机测试与性能调优指南,帮助开发者高效完成雷达数据适配。

weixin_42551227的博客 420

7-6 成绩统计 (10分)

7-6成绩统计(10分) n=int(input()) lst=list(map(int,input().split())) print('Max: {}'.format(max(lst))) print('Min: {}'.format(min(lst))) print('Ave: {:.1f}'.format(sum(lst)/len(lst))) print('Fail: {}'.format(len([i for i in lst if i<60]))) ...

胡小二的博客 2486

Codex CLI 的多模型切换实战:如何在中转 API 环境下灵活选择最佳模型

本文详细介绍了在Codex CLI中实现多模型切换的实战技巧,重点解析了如何在中转API环境下灵活选择最佳AI模型。通过配置Node.js环境和智能路由策略,开发者可以根据任务类型、编程语言和成本考量,在GPT-5、Claude和DeepSeek等模型间高效切换,提升代码生成、审查和优化的效率。

weixin_29291185的博客 835

【论文速读】MLDT:基于开源大语言模型的复杂长时机器人任务规划多层次分解方法

—在数据驱动的人工智能技术领域,开源大语言模型(LLMs)在机器人任务规划中的应用是一个重要的里程碑。近期基于开源大语言模型的机器人任务规划方法通常利用大量的任务规划数据集来提升模型的规划能力。虽然这些方法展现出了一定的前景,但它们在处理复杂长时任务时存在困难,因为这类任务需要理解更多的上下文信息并生成更长的动作序列。本文提出多层次分解任务规划方法(MLDT)来解决这一局限性。该方法创新性地在目标级、任务级和动作级对任务进行分解,以应对复杂长时任务带来的挑战。

muyulingfengye的博客 1643

7-6 辗转相除法求最大公约数 (10分)

用辗转相除法求两个正整数的最大公约数。 输入格式: 输入在一行中给出2个正整数,其间以逗号分隔。 输出格式: 在一行中按照格式“gcd =最大公约数”顺序输出两个整数的最大公约数。 输入样例: 15,20 输出样例: gcd=5 #include <stdio.h> int main(int argc, char *argv[]) { int m,n,p,temp,r; sca...

小菜求生机带你C到飞起 1718

Cadence Virtuoso实战:NMOS差分放大器设计与SPICE仿真全解析

本文详细解析了使用Cadence Virtuoso设计NMOS差分放大器并进行SPICE仿真的全流程。从基础设计要点、原理图绘制到工作点分析与性能调优,提供了实用的设计技巧和常见问题解决方案,帮助工程师高效完成模拟集成电路设计。重点介绍了差分放大器的关键参数设置、饱和区优化及版图设计注意事项,适用于ADC、DAC等高性能电路开发。

weixin_28340315的博客 610

源码0501-07-GCD的基本使用

经常使用的GCD // ViewController.m // 07-GCD的基本使用 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidL...

weixin_30809173的博客 119

PCB作为智能小车底盘的设计方法与工程实践

PCB底盘是一种将机械结构与电子设计深度融合的嵌入式系统集成方案,其本质是利用印制电路板的高精度制造能力(±0.05mm孔位公差)和FR-4材料的结构强度(弯曲强度345MPa),替代传统亚克力或铝合金底盘。该方案通过封装库驱动的正向设计、机械层语义化定义及机电协同布局,实现安装基准统一、共地平面优化与RF天线集成等技术价值。广泛应用于教育机器人、AGV小车、模块化开发平台等对空间紧凑性、量产一致性与电磁兼容性有严苛要求的移动嵌入式场景,尤其适合具备EDA工具使用能力的电子工程师主导的跨学科开发流程。

weixin_36064575的博客 127

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5505

iOS开发多线程—07GCD的基本使用

iOS开发多线程篇—GCD的基本使用 一、主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。 获取主队列的方式:  dispatch_queue_t queue=dispatch_get_main_queue();

沐阳的博客 512

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1321

iOS开发多线程篇 07 —GCD的基本使用

iOS开发多线程篇—GCD的基本使用 一、主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。 获取主队列的方式: dispatch_queue_tqueue=dispatch_get_main_queu...

aaa1231722的博客 61

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

07、GCD简介

1、什么是GCD1)全称是Grand Central Dispatch2)纯C语言,提供了非常强大的函数2、GCD的优势1)GCD是苹果公司为多核的并行运算提供的解决方案2)GCD会自动利用更多的CPU内核(比如双核、四核)3)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)4)程序员只需告诉GCD想要执行什么样的任务,并不需要编写任何和 线程相关的管理代码3、GCD的两个...

超大神的博客 251

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

多线程 - 07.GCD函数和队列组合示例

1.GCD基本使用(异步函数+并发队列) 可以看到,系统自动给开辟了新的子线程来执行这三个任务,且由于时并发队列,系统开辟了三个子线程 注意:开辟多少个子线程由系统决定,三个任务依次从队列中取出放在不同的子线程执行,但是由于CPU调度子线程是由系统控制的,所以任务执行的顺序不定,并没有违背队列中任务的先进先出原则 -(void)touchesBegan:(NSSet *)touches withEv

MrRightZJ的博客 564

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IOS开发之——多线程- GCD线程间通信(07)

IOS开发之——多线程- GCD线程间通信(07) 一 概述 之前讲述过子线程下载完成后通过performSelectorOnMainThread将结果发送到主线程显示 本例介绍GCD方式实现线程间通信 二 GCD线程间通信过程 在touchesBegan点击事件中通过dispatch_sync开启线程下载图片 将图片链接包装成NSURL NSData dataWithContentsOfURL将url转换为NSData [UIImage imageWithData:data];将data转换为UI

我的博客 624

GCD全解-07-dispatch_semaphore-信号量/数据同步

主要API列表 dispatch_semaphore_create   创建一个semaphore dispatch_semaphore_signal   发送一个信号 dispatch_semaphore_wait    等待信号 如何在GCD中快速的控制并发呢? 信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。 当一个信号量被信号通知,其计数会被增加。...

zhuge1127的博客 675

iOS--多线程GCD线程间通信--07

1.// 需要设置按钮的image和backgroundImage,建议先把按钮类型改为custom,才能保证设置成功 // 属性名不能以new开头 // 只有在init开头的构造方法中,才允许对self进行赋值#define HMGlobalQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) #define HMM

刘海阳的博客 940

GCD基本使用总结

1.GCD的基本使用 1.1 同步执行 + 串行队列 总结:所有任务都是在主线程完成的,证明了同步执行不具备开启新的线程。所有任务都是按序执行。 1.2 同步执行+并发队列 总结:所有任务都是在主线程中执行的,没有开启新的线程,也就是说同步不具备开启新线程的能力。虽然并发队列可以同时执行多个任务,但是当前只有一个线程,一个线程只能执行一个任务,所以这里也就不存在并发队列。 ...

ivolcano的博客 2251

ios——GCD基本使用

GCD基本概念 什么是GCD? 全称是Grand Central Dispatch,翻译为中央调度;纯C实现,提供了非常强大的函数。 GCD的优势 GCD是苹果公司为多核并行运算提出的解决方案 GCD会自动利用更多的CPU内核(如双核、四核等) GCD会自动管理线程的什么周期(线程创建、任务调度、线程销毁) 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码 任务和队列 理解GCD中核心的两个概念 任务:执行什么操作(下载图片、耗时循环等) 队列:用来存放任务(程序中不可能有一个

fengyuyxz的博客 694

iOS GCD的基本使用

简而言之,就是 创建任务--创建对列-->把任务放到对列里.同步执行(sync)和异步执行(async)。串行对列,并行对列(注意:并行对列并不是说有多个对列并行,不管串行对列还是并行对列,都只有一个对列,对列里放的任务是串行的,叫串行对列,对列里放的任务是并行的,叫并行对列)所以理论上任务和对列有4种组合方案:1.串行对列里添加同步任务;2.串行对列里添加异步任务;3.并行对列里添加同步任务;

wyz670083956的博客 1831

swift---GCD的基本使用

简介 Grand Central Dispatch (GCD) 是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。 众所周知,GCD, NSOperationQueue, NSThread, pthread是iOS中多线程的几种处理方式,Swift3之前GCD仍是面向过程的写法,所以需要封装一层再使用。Swift3苹果打成Dispatch...

wuwuFQ的博客 7565

GCD函数基本使用

串行(Serial) 任务只能一个个按顺序执行,只能等到上一个任务执行完毕,才能执行当前的任务; 并发 (Concurrent): 任务不按顺序执行,不用等待上一个任务执行完,多个任务是同时执行的;在异步情况下可开启多个线程执行任务; 同步(Synchronous): 不具备开启新线程的能力; 任务执行完才返回; 同步函数: dispatch_sync(); 异步 (Asynchro...

jbr5740的专栏 1973

iOS——【GCD】

GCD指的是Grand Central Dispatch,它是苹果公司开发的一套多线程编程技术。GCD提供了一种简单而有效的方式来管理应用程序中的并发任务。它通过将任务提交到适当的队列(串行队列或并发队列)来管理并发执行的任务,从而帮助开发者更轻松地实现并发编程,提高应用程序的性能和响应速度。上面的就是在后合线程中执行长时间处理,处理结束时,主线程使用该处理结果的源代码。这样,dispatch_async (queue, ^{ 这仅有 一行的代码表示让处理在后台线程中执行。

m0_73348697的博客 1920

iOS中GCD的使用

在iOS开发中,所有的UI操作都是在主线程中进行的,那么如果将把耗时操作也放在主线程中,就会造成页面卡顿的现象。因此我们应该将耗时操作放在子线程中执行,GCD是iOS多线程当中比较常用的方法,下面简单介绍一下GCD的使用。 一、GCD当中的基本概念 1.同步函数和异步函数 同步函数: 同步函数不具备开启新线程的能力 dispatch_sync(dispatch_queue_t _Nonnull...

cherry的博客 2487
上一篇: 03-掌握-NSThread基本使用
下一篇: swift 3
巴糖
博客等级 码龄12年 8粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值