iOS开发--多线程的串行, 并行; 同步, 异步理解

点云从入门到精通技术详解100篇-基于三维点云的机器人抓取位姿检测(续) 集到的深度信息会存在噪点,因此需要将生成的场景点云进行预处理,获得平滑、降采样处理场景点云,本文设计的预处理操作更能从冗杂的场景点云中提取清晰、平滑的目标点云,便于后续的抓取位姿采样,提高后续算法的处理效率。因此需要对场景点云进行适当的分割,仅保留目标物体的点云,整个过程可以通过。场较小时,空间中的点云密度会更加提高;觉子系统的效率,再保持全局点云几何形状不改变的前提下,通过对目标点云进行。体素降采样可以快速地减少点云数据并同时保持点云的形。个点,由于我们实施抓取的目标物体只占整个场景点云图的一部分, 阅读详情

前言

多线程在iOS开发的过程中是十分常见的操作, 其中, 将任务放到子线程操作, 避免对主线程造成阻塞影响是最为常见的原因.
多线程的概念就不赘述了, 下面对串行, 并行; 同步, 异步的概念做二维对比解释.

写在前面:

说实话, 刚接触的时候, 对这四个概念着实头疼, 不好做区分, 总是混为一谈. 于是, 采用多方对比就会好理解一些.

我理解的单元任务分为三个阶段:

  • 创建任务
  • 将任务放到线程中执行
  • 任务完成

下面, 我们做一个二维表格

线程同步异步对比
串行在主线程操作, 任务一次执行, 执行完成后, 在执行主线程的内容创建一个新的子线程, 所有任务在子线程操作, 线程内容的任务依次执行, 子线程和主线程的内容同时执行.是否阻塞主线程
并行在主线程操作, 主线程任务等待, 所有任务同时创建, 但是在此队列中, 任务执行为依次执行, 没有轮到的任务处于等待状态, 执行完成后, 执行主线程内容创建多条线程(未必有多少任务创建多少线程, 有点像cell的复用), 按顺序创建任务, 同时执行, 同时, 主线程任务正常执行.1. 是否阻塞主线程
2.任务的执行时间是否统一
1. 主线程阻塞等待
2. 任务的创建和执行时间点
1. 主线程异步执行, 不阻塞.
2. 任务的创建和执行时间点

如果, 上面的概念不好理解, 那么我们…

在这里插入图片描述

用手机打电话
任务单元:
  1. 存手机号(创建任务)
  2. 打电话(执行任务)
  3. 挂电话(任务完成)
    在这里插入图片描述
    在这里插入图片描述
素材

iPhone(主线程)
在这里插入图片描述

主要任务

需要用iPhone执行给老师打电话的任务
在这里插入图片描述

紧急任务

通知每个学生明天不要上学, 在家学习
给学生打电话

四种不同组合的情况
  1. 串行同步:

    只有一部iPhone, 根据通讯录列表, 依次存学生手机号, 给学生打完电话, 打完电话, 再存下一个…最后再给老师打电话
    在这里插入图片描述

  2. 串行异步:

    我再买一部华为Meta Pro, 用iPhone执行给老师打电话任务, 同时 用华为Meta Pro执行给所有学生依次打电话任务.
    在这里插入图片描述

  3. 并行同步:

    只有一部iPhone, 我先将所有学生的电话存到通讯录中, 然后依次给每个学生打电话, 最后, 我再执行给老师打电话的任务
    请添加图片描述

  4. 并行异步:

    执行给老师打电话任务, 同时, 执行给每个学生打电话的任务
    在这里插入图片描述

写在后面

多线程的有点很明显, 更何况现在是多核的天下, 可以将多线程的性能最大化, 但是, 也是有缺点, 过度的使用多线程同样会造成CPU的压力倍增.
所以, 从实际角度出发, 多线程可以解决大部分卡顿问题, 但是也会造成卡顿, 我们可以在适当的时候给予用户等待的动画, 做到更好的交互.

概念性的东西实在不好理解, 如果文章中有错误地方, 还望指出.

图片素材来自网络, 如有侵权, 联系我删除.

YOLO26 vs YOLOv12 vs YOLOv10:工业场景性能实测,速度/精度/部署难度全对比(附完整测试代码) YOLO26:工业场景全能型选手,无NMS+无DFL设计让部署和推理都省心,小目标精度优势明显,CPU推理速度提升43%,适合大多数生产线场景YOLOv12:中大型目标检测专家,Area Attention在复杂背景下表现出色,适合汽车、家电等大型零部件检测YOLOv10:速度狂魔,GPU上性能领先,轻量化版本适合边缘部署,但小目标精度略逊,适合对实时性要求极高的分拣线场景。 阅读详情

相关推荐

python解析通达信dat与blk数据文件【附源码】

本文介绍了一个完整的通达信金融数据解析器项目,该项目攻克了通达信专有二进制文件格式解析的技术难题。项目采用模块化架构,从基础二进制解析到增强数据分类,最终实现智能语义化列名生成,形成完整的数据处理链路。核心技术包括自适应编码检测、智能数据类型推断和基于业务规则的语义化处理,解决了逆向工程、多编码兼容性等挑战。项目成果显著,解析成功率达100%,数据可读性大幅提升,开发效率提高50%,为量化交易、可视化分析等场景提供了可靠数据支持。该方案不仅具备技术创新性,更具有实际工程应用价值,为金融数据分析领域提供了可复

qq_36224726的博客 2687

iOS串行、并行、同步与异步

简介 这几个名词一般我们都是在使用到多线程的时候才会出现,那么接下来介绍一下我自己对于它们的理解,如果有误,劳请指教。 串行与并行 串行与并行在多线程中用于修饰队列的性质。 我们都知道,队列中存放的是执行的任务。串行队列指的是处于这条队列中的每个任务,都需要等它的前一个任务从开始执行到结束执行完,这个任务才能开始执行。也就是说,若一个任务如果处于开始执行与结束执行的期间,它的下一个任务不能开始执行...

qq_39644268的博客 836

字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路

GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。

qq_38610923的博客 1708

iOS面试题基本答案一

1、多线程使用场景: (1)往数据库中插入数据(例如,当我们把用户通讯录中的联系人存储在数据库中的时候,有些用户的联系人非常多(3000多人),一开始把这个操作放在主线程中执行,结果造成界面长时间没有反应)。 解决办法:把数据库插入的操作改成在子线程中执行,当插入完毕的时候,在complete完成回调中通知住线程做相应的操作。 (2)单例。数据库对象创建时用dispatch_once方法执行

花色1125的博客 402

基于51单片机的智能灌溉系统

基于51单片机的智能灌溉系统

jiejiezuishuai的博客 2100

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

iOS 并行队列、串行队列和线程

在开发过程中经常用到队列和线程结合使用,给队列中添加任务有四种使用方法:串行队列中执行同步任务、串行队列中执行异步任务、并行队列中执行同步任务、并行队列中执行异步任务,还有主队列,下面先说下主队列主队列主队列:专门负责调度主线程度的任务,没有办法开辟新的线程。所以,在主队列下的任务不管是异步任务还是同步任务都不会开辟线程,任务只会在主线程顺序执行。主队列异步任务主队列中放入异步任务,不是马上执行,...

u012490014的专栏 3797

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式

在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。

2203_75345038的博客 2493

iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等

iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)进程正在运行中的程序被称作进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间。线程进程中的一个对立的执行路径被称为线程,一个进程中至少包含一条线程,该线程被称为主线程。多线程多创建一条或者多条线程的,目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码

JacobKong的博客 4336

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

Challenge 4 - OSCP A

在c盘下发现一个windows.old,在里面可以找到SYSTEM和SAM文件,下载到本地,利用samdump2解密发现没解出来,再来试试pwdump.py(https://github.com/CiscoCXSecurity/creddump7)得到压缩包密码bludecode,解压之后发现一个比较特殊的文件configuration.php,里面有两个类似密码的字符串。登录之后在/opt/backups/下发现几个特殊文件,其中sitebackup3.zip是个正常的压缩包。但是这个压缩包是有密码的。

羽的博客 5773

iOS 多线程--GCD 串行队列、并发队列以及同步执行、异步执行

1 什么是队列(queue) 在开始GCD之前先来说一下队列的概念,因为GCD的任务都是在队列中派发的; 队列(queue):是先进先出(FIFO, First-In-First-Out)的线性表。但是在队列前面加上串行和并发这两个定语之后,也就是串行队列、并发队列,有时就容易搞不清楚了,特别是再加上同步和异步的概念之后,有时就更不清楚了。 2 串行队列和并发队列 注意是并发队列(Concurre...

weixin_33965305的博客 274

2023华为od机试C卷【推荐多样性】Java&Go 实现

推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为N份,如果不够N个,也要全部分配完,

MISAYAONE的博客 2179

iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)

  原文:iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码) 进程 正在运行中的程序被称作进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间。 线程 进程中的一个对立的执行路径被称为线程,一个进程中至少包含一条线程,该线程被称为主线程。 多线程 多创建一条或者多条线程的,目的就是为了开启一条新的执行...

童真的烂漫的专栏 866

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

iOS多线程

本文转载于 http://www.jianshu.com/p/0b0d9b1f1f19 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园。OK,let's begin! 概

清淡的邪恶的博客 463

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS-图文表并茂,手把手教你GCD

前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步、异步、串行、并行和死锁这几个名词的漩涡中渐渐放弃治疗。本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律。 线程、任务和队列的概念 异步、同步 & 并行、串行的特点 一条重要的准则 一般来说,我们使用GCD的最大目的是在新的线程中同时执行多个任务,这意味着我们需要两项条件: ...

diancannei3748的博客 109

Camera2Demo

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

iOS多线程之GCD

#import "JSC_GCD.h" @interface JSC_GCD () @property (nonatomic,weak)UIImageView *imageview; @end @implementation JSC_GCD -(void)learn { /* 在 GCD 中,加入了两个非常重要的概念: 任务 和 队列。 任务:即操作,你想要干什...

凉城旧梦的博客 358

GCD函数基本使用

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

jbr5740的专栏 1973

iOS开发中关于多线程的问题(NSOperationQueue,NSThread,GCD)

1.多线程的优点和缺点分别是什么? 答:优点:1、将耗时较长的操作(网络请求、图片下载、音频下载、数据库访问等)放在子线程中执行,可以防止主线程的卡死;2、可以发挥多核处理的优势,提升cpu的使用率。       缺点:1、每开辟一个子线程就消耗一定的资源; 2、会造成代码的可读性变差;3、如果出现多个线程同时访问一个资源,会出现资源争夺的情况 3. 2.NSOperationQueu

X_codeWKH的博客 2604

iOS开发多线程网络———多线程概念及GCD

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@...

weixin_30642267的博客 94

iOS 多线程(四)GCD

GCD:Grand Central Dispatch(GCD) 是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样就比以前的线程更有效率。 Dispatch Queue “Di

奋斗的菜鸟ing 1451

GCD基本使用

主要概念队列 dispatch_queue_t,队列名称在调试时辅助,无论什么队列和任务,线程的创建和回收不需要程序员操作,有队列负责。  串行队列:队列中的任务只会顺序执行(类似跑步)       dispatch_queue_t q = dispatch_queue_create(“....”, dispatch_queue_serial);  并行队列: 队列中的任务通常会并发执行(类似赛跑...

weixin_30514745的博客 138

线程中同步、异步、串行、并行 (IOS开发)

【基础知识点】 进程:可理解成一个可执行文件的执行过程。在ios app上的话我们可以理解为我们的app的.ipa文件执行过程也即app运行过程。杀掉app进程就杀掉了这个app在系统里运行所占的内存。 线程:线程是进程的最小单位。一个进程里至少有一个主线程。就是那个main thread。非常简单的app可能只需要一个主线程即UI线程。当然大部分还是会有一些子线程的,比如如果你用了AFNet...

m_miao 1276

C++ 线程(串行 并行 同步 异步)详解

看了很多关于这类的文章,一直没有总结。不总结的话就会一直糊里糊涂,以下描述都是自己理解的非官方语言,不一定严谨,可当作参考。 首先,进程可理解成一个可执行文件的执行过程。在ios app上的话我们可以理解为我们的app的.ipa文件执行过程也即app运行过程。杀掉app进程就杀掉了这个app在系统里运行所占的内存。 线程:线程是进程的最小单位。一个进程里至少有一个主线程。就是那个main th...

weixin_30477293的博客 1125

【iOS多线程(一)】GCD详细总结-同步异步/串行并发

1. GCD简介2. GCD任务和队列任务队列 (dispatch是派遣的意思)队列的创建方法和获取方法3.我的总结:同步和异步函数,并行和并发队列同步异步函数串行并发队列是否开启新线程,串行还是并发执行任务,如何分析?4. GCD基本使用同步串行队列同步并行队列异步串行队列异步并行队列sync函数造成的线程死锁5. 进程间通信6. GCD的其他方法6.1 GCD栅栏方法:dispatch_barrier_async6.2、GCD 延时执行方法:dispatch_after。

cheng_lin0201的博客 1929

ios多线程同步异步任务、串行并行队列、死锁

队列 概念:队列只负责任务的调度,而不负责任务的执行,任务是在线程中执行的。(可以理解成任务是放在队列里面的,要被调度到线程中去执行)特点:队列先进先出,排在前面的任务最先执行。分类:队列分为串行、并行、主队列、全局队列。 串行队列:任务按照顺序被调度,前一个任务不执行完毕,队列不会调度。 并行队列:只要有空闲的线程,队列就会调度当前任务,交给线程去执行,不需要考虑前面是都有任...

406
上一篇: iOS开发--摄像头捕获数据处理卡顿的处理
下一篇: iOS开发--关闭系统黑夜模式的影响
单细胞的逻辑
博客等级 码龄10年 19粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值