GCD基本概念    优势:自动利用更多的CPU内核,为多核的并行提出解决方案,自动管理线程的生命周期    核心概念:任务、队列 任务:执行什么操作 队列:执行什么任务    类型:并发、串行 将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行,任务的取出遵循队列的&nbs
转载 2024-10-23 11:27:46
62阅读
# iOS GCD串行队列执行任务iOS开发中,GCD(Grand Central Dispatch)是一个强大的并发编程工具。通过使用GCD,开发者可以轻松地管理多线程任务,提升应用的响应速度,优化资源的使用。本文将重点介绍GCD中的串行队列,并通过代码示例演示其用法。 ## 什么是GCDGCD是苹果在iOS和macOS系统中提供的一种多线程编程的解决方案。它通过任务的提交和执行来
原创 10月前
58阅读
队列(配合任务, 决定了任务的执行方式, 串行还是并发)串行队列(DISPATCH_QUEUE_SERIAL) :每次只有一个任务被执行。让任务一个接着一个地执行。(只开启一个线程,一个任务执行完毕后,再执行下一个任务)具备开启已经被创建的线程的能力并发队列(DISPATCH_QUEUE_CONCURRENT) :放到并行队列的任务GCD 也会 FIFO的取出来,但不同的是,它取出来一个就会放到
GCD有两个用来执行任务的函数,queue是队列的意思,block中写我们要执行的任务一种是同步的方式去执行任务dispatch_sync(dispatch_queue_t _Nonnull queue, ^{ }); 一种是异步的方式去执行任务dispatch_async(dispatch_queue_t _Nonnull queue, ^{
转载 2024-07-13 09:35:28
49阅读
for循环里的异步操作开发中经常会遇到这样一些情况,比如: 1.登录失败后的多次登录重连场景。 2.在一个for循环遍历里,有多种异步操作,需要在所有的异步操作完成后,也就是for循环的遍历结束后,再去执行其他操作,但是不能卡主线程,这时候就需要用其他方法了。我遇到的需求是,在一个for循环里有数据库的查询操作以及网络请求操作,然后将数据库的查询和网络请求的结果添加到一个临时数组中,最后等for循
GCD 核心概念:将任务添加到队列,指定任务执行的方法任务 使用block封装block 就是一个提前准备好的代码块,在需要的时候执行队列(负责调度任务串行队列:一个接一个的调度任务并发队列:可以同时调度多个任务任务执行函数(任务都需要在线程中执行!) 同步执行:当前指令不完成,不会执行下个指令异步执行:当前指令不完成,同样可以执行下一条指令总结: -开不开线程,取决于执行任务的函数,同步不
转载 2024-05-14 22:30:58
137阅读
近期项目中用到RS232接口和RS485接口,所以在网上搜集了一些资料对常见串口标准进行了归纳总结。  RS232接口:计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进
          Grand Central Dispath-GCD是Apple开发的一个多核编程的解决方法,基本概念就是dispatch queue(调度队列),queue是一个队列,它接收任务,并将任务以先到先执行的顺序来执行。GCD的底层是用线程实现。一. GCD的三种队列(用户队列、全局队列、主队列):首先,Dispatch Q
转载 2024-05-31 13:51:46
120阅读
Dispatch Source Timer 的使用以及注意事项Dispatch Source Timer 是一种与 Dispatch Queue 结合使用的定时器。当需要在后台 queue 中定期执行任务的时候,使用 Dispatch Source Timer 要比使用 NSTimer 更加自然,也更加高效(无需在 main queue 和后台 queue 之前切换)。使用如下:@property
iOS 串行执行任务一直是开发者们面临的一大挑战。尤其是在性能优化和资源管理方面,如何确保任务按照规定的顺序执行,又不阻塞主线程,成为了一个关键问题。在这篇文章中,我们将详细阐述这一问题的背景、参数解析、调试步骤、性能调优、排错指南,以及生态扩展。希望通过这个过程,为大家的开发工作提供一些有价值的参考。 --- ## 背景定位 在我们的应用中,用户反馈在线提交任务的速度比预期要慢,导致体验不
原创 7月前
51阅读
http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%83%AD/32951.shtml  进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间 线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程   队列&nbsp
转载 2023-07-27 17:04:22
330阅读
一 串行通信与并行通信主机与外设或主机与主机之间通过一条(极少数)线路将数据按位顺序传输的方式实现数据的传输与共享。另外与之相对的还有并行通信,即多个数据通过多条线路同时传输。通俗的理解:主机与外设就像城镇,传输的线路就像车道,车流量即数据流量。城市之间路途远,车流量小,只有一条车道,城市内部因车流量大,需要多车道并行。延伸到通信的应用场合也是如此,串行通信节省传输线,在远距离传输成本更低;而并行
GPU上做排序,因为GPU的并行性,所以需要一个并行的排序算法。而BitonicSort双调排序是一个非常适合并行化的排序算法,其在《算法导论》的排序网络一章对其基本原理做了描述与证明。有兴趣大家可以看看。算法基本思想和几个重要的步骤。如果需要了解BitonicSort更加详细的理论证明,可以参考《算法导论》。BitonicSort的算法复杂度为O(n(logn)^2),看到这里大家会问比快排O(
转载 2023-08-16 10:58:13
93阅读
struct 字段 在大多数语言中 struct 字段被用来定义结构体,在swift 中也一样,被定义额结构体,但是swift中的struct更强大,突然发现在swift中Sting类其实是个结构体,甚至swift Foundation框架的SDK,诸如String,Array,Dictionary都是基于struct实现的。如图: ( ⊙ o ⊙ )是的你没看错,在String结构体中定义了**
转载 2023-07-26 13:40:15
77阅读
GCD中有一个重要的概念,派发队列(dispatch queue)。派发队列是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行。派发队列可以是并发的或串行的。并发队列可以执行多任务串行队列同一时间只能执行单一任务。1、3中类型的派发队列(1)串行队列,串行队列通常用于同步访问一个特定的资源,每次只能执行一个任务。使用函数dispatch_queue_create,可以黄建串行队列。(2
转载 2023-12-25 21:40:43
114阅读
GPIOGPIO,英文全称为General-Purpose IO ports,也就是通用IO口。 在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。 而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。 所以在微控制
转载 2023-12-26 15:28:10
76阅读
本文主要三大块:一,串口同步和异步在底层通信上的区别(这部分点到为止,不是主要探讨内容,有个基本理解即可)。                        &n
iOS中的队列分为两类,串行队列(serial queue)和并发队列(concurrent queue).串行队类会按照先进先出的原则来调度任务,在前一个任务没有执行结束之前,后加入队类的任务不会被调度;而对于并发队列来讲可以同时调度多个任务,默认情况下各个任务之间没有必然的依赖关系,任务执行顺序依据系统调度而定,没有必然的先后顺序.添加任务的方式也有两类,同步添加(dispatch_sync)
# iOS串行队列执行任务指南 ## 1. 概述 在iOS开发中,我们经常需要按特定顺序执行一系列任务,以确保数据的一致性和正确性。串行队列是一种有效的方式来管理任务的执行顺序。本文将介绍如何使用串行队列在iOS应用中按顺序执行任务。 ## 2. 流程概览 下面的表格展示了按串行队列执行任务的整体流程: | 步骤 | 描述 | | ---- | ---- | | 1. 创建串行队列
原创 2023-12-10 09:59:50
165阅读
/** 核心概念 任务:block里需要执行的操作 队列:把任务添加进入队列中,按照先进先出的原则来执行任务 串行队列:一个一个的执行 并行队列:可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)并发功能只有在异步(dispatch_async)函数下才有效。 同步任务:不会开辟新的线程,任务在当前的线程中执行,同时任
  • 1
  • 2
  • 3
  • 4
  • 5