for循环里的异步操作开发中经常会遇到这样一些情况,比如: 1.登录失败后的多次登录重连场景。 2.在一个for循环遍历里,有多种异步操作,需要在所有的异步操作完成后,也就是for循环的遍历结束后,再去执行其他操作,但是不能卡主线程,这时候就需要用其他方法了。我遇到的需求是,在一个for循环里有数据库的查询操作以及网络请求操作,然后将数据库的查询和网络请求的结果添加到一个临时数组中,最后等for循
转载
2024-07-29 16:38:52
86阅读
GCD有两个用来执行任务的函数,queue是队列的意思,block中写我们要执行的任务一种是同步的方式去执行任务dispatch_sync(dispatch_queue_t _Nonnull queue, ^{
}); 一种是异步的方式去执行任务dispatch_async(dispatch_queue_t _Nonnull queue, ^{
转载
2024-07-13 09:35:28
49阅读
GCD 核心概念:将任务添加到队列,指定任务执行的方法任务 使用block封装block 就是一个提前准备好的代码块,在需要的时候执行队列(负责调度任务) 串行队列:一个接一个的调度任务并发队列:可以同时调度多个任务任务执行函数(任务都需要在线程中执行!) 同步执行:当前指令不完成,不会执行下个指令异步执行:当前指令不完成,同样可以执行下一条指令总结: -开不开线程,取决于执行任务的函数,同步不
转载
2024-05-14 22:30:58
137阅读
Grand Central Dispath-GCD是Apple开发的一个多核编程的解决方法,基本概念就是dispatch queue(调度队列),queue是一个队列,它接收任务,并将任务以先到先执行的顺序来执行。GCD的底层是用线程实现。一. GCD的三种队列(用户队列、全局队列、主队列):首先,Dispatch Q
转载
2024-05-31 13:51:46
120阅读
队列(配合任务, 决定了任务的执行方式, 串行还是并发)串行队列(DISPATCH_QUEUE_SERIAL) :每次只有一个任务被执行。让任务一个接着一个地执行。(只开启一个线程,一个任务执行完毕后,再执行下一个任务)具备开启已经被创建的线程的能力并发队列(DISPATCH_QUEUE_CONCURRENT) :放到并行队列的任务,GCD 也会 FIFO的取出来,但不同的是,它取出来一个就会放到
转载
2023-10-12 22:31:21
195阅读
# iOS GCD串行队列执行任务
在iOS开发中,GCD(Grand Central Dispatch)是一个强大的并发编程工具。通过使用GCD,开发者可以轻松地管理多线程任务,提升应用的响应速度,优化资源的使用。本文将重点介绍GCD中的串行队列,并通过代码示例演示其用法。
## 什么是GCD?
GCD是苹果在iOS和macOS系统中提供的一种多线程编程的解决方案。它通过任务的提交和执行来
GCD基本概念 优势:自动利用更多的CPU内核,为多核的并行提出解决方案,自动管理线程的生命周期 核心概念:任务、队列 任务:执行什么操作 队列:执行什么任务 类型:并发、串行 将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行,任务的取出遵循队列的&nbs
转载
2024-10-23 11:27:46
62阅读
接着上面的GCD封装,以下进行列子验证 1.导入GCD.h 2.创一个串行队列: - (void)serailQueue{ //创建出队列 GCDQueue *queue = [[GCDQueue alloc]initSerial]; //运行队列中的线程 [queue execute:^{ NSL
转载
2017-05-01 17:50:00
259阅读
2评论
GCD的队列能够分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次仅仅调度一个任务,队列中的任务一个接着一个地运行(一个任务运行完成后,再运行下一个任务) 创建一个队列 dispatch_queue_t q =dispatch_que...
转载
2016-01-18 14:07:00
129阅读
2评论
GCD的队列能够分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次仅仅调度一个任务,队列中的任务一个接着一个地运行(一个任务运行完成后。再运行下一个任务) 创建一个队列 dispatch_queue_t q = dispatch_queue_cre
转载
2017-07-22 11:12:00
156阅读
2评论
多线程中的队列有: 串行队列,并发队列,全局队列(并发),主队列(串行)。执行的方法有:同步执行和异步执行。提到多线程:pthread,NSThread,GCD,NSOperation 其中phtread是跨平台的。 GCD和NSOperation都是常用的,后者是基于前者的。两者区别: GCD的核心概念是将一个任务添加到队列,指定任务执行的方法,然后执行。 NSOperation则是直接
转载
2023-11-01 16:20:38
211阅读
近期项目中用到RS232接口和RS485接口,所以在网上搜集了一些资料对常见串口标准进行了归纳总结。 RS232接口:计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进
API-https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/doc/uid/TP40008079 一、同步、异步和串行、并行任务串行执行就是每次只有一个任务被执行,任务并发执行就是在同一时间可以有多个任务
转载
2024-02-05 14:03:09
118阅读
CGD是线程管理,不如说是队列管理,那么我们先来介绍一下GCD中常用的队列: Serial Diapatch Queue 串行队列 当任务相互依赖,具有明显的先后顺序的时候,使用串行队列是一个不错的选择 创建一个串行队列:dispatch_queue_t serialDiapatchQueue=dispatch_queue_create("com.test.queue", DISPATCH_QU
转载
2024-05-17 15:46:53
56阅读
首先说一下四个概念异步执行:开启一个子线程执行代码,不会堵塞主线程, 同步执行:只有执行完代码,才会执行下面的代码,会堵塞主线程并行队列:运行多个子线程同时存在和运行 串行队列:最多只准一个子线程存在和运行1.异步执行 + 并行队列- (void)oneClick{
//创建一个并行队列
dispatch_queue_t queue = dispatch_queue_creat
转载
2023-09-23 14:34:15
572阅读
GCD、串行并行同步异步组合
1、异步函数和并行队列注意:这些任务都是在创建完之后才执行。异步函数+并发队列,可以新建线程,各线程也是并发执行的。1 //第一种:系统方法创建并发队列(全局队列)
2 /**
3 * <#Description#>
4 *
5 * @param identifi
转载
2024-06-20 07:09:38
132阅读
前段时间,发生了一个问题引起了我对IO队列深度的研究。存储服务器中linux kernel的mpt2sas驱动模块,将max_queue_depth设置为1024时,引起系统加载驱动时卡死,而调整为512则没问题。后来看了很多这方面的资料,终于弄明白了。 我们为了追求系统的性能,往往将max_queue_depth设置的很大。但是并不是越大对性能越有帮助。以下内容全部出自转载,我偷下懒!
# iOS GCD 队列简析及示例
在iOS开发中,如何高效管理并发任务是一个重要的议题。Apple引入了GCD(Grand Central Dispatch)来简化并发编程,避免了线程的复杂性。本文将详细讲解GCD的基本概念、使用方法以及具体的代码示例。
## GCD基础概念
GCD是iOS的调度机制,主要用于在多核系统上并行处理任务。其核心概念包括:
1. **队列(Queue)**:
原创
2024-10-09 03:23:16
34阅读
一 各种队列的执行效果全局并发队列手动创建串行队列主队列同步(sync)没有开启新线程串行执行任务没有开启新线程串行执行任务没有开启新线程串行执行任务异步(async)有开启新线程并发执行任务有开启新线程串行执行任务没有开启新线程串行执行任务注意:使用sync函数往当前串行队列中添加任务,会卡住当前的串行队列二 串行队列GCD中获得串行有2种途径2.1 使用dispatch_queue_creat
转载
2023-12-15 07:39:51
178阅读
# 串行队列在 iOS 开发中的应用
在 iOS 开发中,处理多线程任务是一项重要的技能。尤其是在提升应用性能和用户体验时,合理使用队列和线程是至关重要的。本文将重点介绍**串行队列**,以及如何在 iOS 开发中有效使用它,并提供相应的代码示例。
## 什么是串行队列?
串行队列是一种队列类型,只能在同一时间执行一个任务。当一个任务开始执行时,队列会等待该任务完成后才能开始下一个任务。这种