同步和异步的概念

AI中台系统设计方案探讨 集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。 阅读详情

前言

今天在看安卓广播机制的时候,无意中看到一个一本书中提到标准广播是异步执行的广播,而有序广播是同步执行的广播。虽然以前对同步和异步通信有所了解,但是感觉在不同的应用场景下总是容易混淆,所以今天查了查资料,做个小总结。


1. 困惑?

安卓的标准广播机制是一种完全异步执行的广播,异步的特点在于广播发出之后,所有的广播接收器都能在几乎同一时刻接受这条广播消息,没有先后顺序,不会被截断。

有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受这条广播消息。当这个接收器完成逻辑任务之后,才会继续向后传递广播,优先级高的接收器最先收到消息,并且前面的广播接收器可以截断广播。


可以看出,这里的同步和异步是根据广播接受者的特点,或者说广播的特点来区分的。我们先不深入讨论,先了解同步异步的基本概念。


2. 概念详解

正如上面所说,同步和异步在不同场景下的区分特点可能是不同的,我先给出最常见的同步和异步的概念。


2.1. 进程中的同步和异步

(1)进程同步

进程同步就是发出一个功能调用时,在没得到结果之前,该调用就不返回。也就是做完一个任务才会继续下一个任务(此处就和安卓广播的同步和异步有点相似了)。同步调用是一种有序执行的过程。最常见的同步调用就是sendMessage(),这个函数发消息给对方,最对方收到消息并处理,处理函数得到结果之前,这个函数不会有返回,等待处理的结果。只有对方处理完毕,该函数才会把处理函数得到的结果返回。

(2)进程异步

不管在什么场景下,同步和异步都是相对的。对于进程来说,异步就是意味着我只是调用,我启动了进程A,A中又调用B进程,然后不管B处理的结果有没有返回,A都能够继续执行下去。以异步IO操作为例,当代码需要执行一个十分耗时的IO操作时,它只发出一个IO读写指令,则CPU会对存储器进行操作,而不管这个操作是否完成(IO操作很费时),代码进行执行其他的操作。(同步IO则在IO操作时,其他代码等待操作结果)


所以异步是提高性能的一个手段,但是异步也带来一些危害,比如多线程时,异步执行导致多个线程的操作顺序不可预测,从而是结果不可预测,此时需要进行线程同步,一个线程操作资源时,其余线程必须等待。另外,在异步操作时,多个线程和进程间需要通过通知来传递消息。


2.2. 传输中的同步和异步

这个是通信中的概念,我有点忘了,网上查的。。。

(1)异步传输

通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制值 0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码字符为 7 位、汉字码则为8 位。此外,还要附加 1 位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。

(2)同步传输

通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列 (如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。


2.3. 阻塞中的同步和异步

阻塞/非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态。这里主要是为了方便记忆才放在一块说。

(1)阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。
阻塞调用和同步调用是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。

socket接收数据函数recv是一个阻塞调用的例子。
当socket工作在阻塞模式的时候, 如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。

(2)非阻塞

非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。


2.4. 同步和异步以及阻塞和非阻塞的区分

同步和异步以及阻塞和非阻塞的概念极易混淆,我做一些简单的区分说明:以去银行办业务为例

(1)同步阻塞

老老实实排队(阻塞),没得说,并且只能站在那排队,不能干其他的(同步),甚至不能玩手机。。。因为是同步执行,当排队这件事没完成,其余的事也不能干。

(2)异步阻塞

同样是排队(阻塞),但你你可以领个排队号。但是问题在于,在排队这件事情结束前,虽然你不用站在那排队,但你也不能离开,只能等待消息被触发(喊号),所以异步就是不等排队完成而做其他的,但是排队是必须的。

异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息被触发时被阻塞.

(3)非阻塞同步

一边做其他的(非阻塞),一边等待排队(需要你自己去查看)。可能你觉得现实中很不错,实际上程序执行过程中,由于需要不断查看触发消息,需要来回切换,造成消耗过大,效率底下,你可以想象两个老板一会让你做这个,一会让你做那个。。。内心是崩溃的。。。

(4)非阻塞异步

没话说,效率高,VIP会员,你好好打电话,等到你了柜台会叫你的。(消息触发机制)

只需要告诉大堂经理说,排到我这个号码的时候麻烦到外面通知我一下(注册一个回调函数),
那么他就没有被阻塞在这个等待的操作上面,自然这个就是异步+非阻塞的方式了。


3. 解惑

现在回头看安卓的疑惑就很明白了,其实广播的同步和异步并不是指发多少个,其实就是说当异步时,我发了一个广播,因为不需等待结果,所以我继续发给别人,从而造成了几乎同时发给所有人,而同步则是一次一个,等待结果。

如何用python开发“跳一跳”游戏【附源码】 jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。 阅读详情

相关推荐

相控阵多功能雷达工作模式识别技术综述

本文综述了相控阵雷达工作模式识别技术的研究进展。首先介绍了相控阵雷达的典型工作模式分类及其信号特征参数,包括搜索模式(VS、RWS、TWS)、跟踪模式(STT、MTT、TAS)和其他模式(SAM、SAR)等。随后重点阐述了基于信号特征的识别方法,包括时域特征(PRI分析、脉冲幅度包络、数据率)、频域特征(载频变化、调制方式)和混合特征分析方法。最后讨论了当前技术面临的挑战与发展趋势,包括复杂信号环境下的识别难题、新型雷达技术的适应需求以及深度学习技术的应用前景。该领域的研究对电子侦察和威胁评估具有重要意义。

Grow into a more wonderful you 1812

同步传输与异步传输

同步传输 在同步传输中,数据以块或帧的形式发送。此传输是全双工类型。在发送者和接收者之间强制性同步。在同步传输中,数据之间没有间隙。与异步传输相比,传输大量数据更加有效和可靠。 异步传输 在异步传输中,数据以字节或字符的形式发送。该传输是半双工型传输。在该传输中,在数据的起始位和停止位都添加了奇偶校验位。它不需要同步。 同步传输 异步传输 在同步传输中,数据以块或帧的形式发送 ...

luxinfeng的博客 8334

【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞

【代码】【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞。

weixin_41369892的博客 903

同步与异步传输的区别

1,异步传输是面向字符的传输,而同步传输是面向比特的传输。 2,异步传输的单位是字符而同步传输的单位是帧。 3,异步传输通过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信息。 4,异步传输对时序的要求较低,同步传输往往通过特定的时钟线路协调时序。 5,异步传输相对于同步传输效率较低。简单说 同步传输就是,数据没有被对方确认收到则调用传输的函数就不返回。 接收时,如果对方没...

qq_46582421的博客 4524

【sap2000】部分模型通过.s2k文件合并模型generating a global model through partial models by .s2k text file

现在需要通过选项File → Import → SAP2000 .s2k Text File → Add to existing model(如果使用其中一个部分模型作为基础)或New model(如果使用新文件)添加部分模型,并使用以下导入选项。模型A(阶段1/5) Model A (Phase 1/5)模型B(阶段2/5) Model B (Phase 2/5)模型C(阶段3/5) Model C (Phase 3/5)模型E(阶段5/5) Model E (Phase 5/5)

hmywillstronger的博客 1751

folium离线地图实战:从下载到部署的完整指南

本文提供了一份完整的folium离线地图实战指南。针对网络不稳定或内网环境下的地图应用需求,详细讲解了如何下载离线地图瓦片数据,并通过两种核心方法(直接替换URL与创建TileLayer)将其集成到folium中。文章还涵盖了部署优化、边界处理及资源本地化等关键步骤,帮助你构建完全脱离网络依赖的交互式地图应用。

weixin_29061041的博客 275

【计算机网络】异步传输与同步传输

1. 异步传输(Asynchronous Transmission) 1.1 定义 异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。 例子: 计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。 1.2 异步传输要解决的问题 1.2.1 异步传输的问题 异步传输存在一个潜

ahLOG的博客 1万+

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

网络传输的两种方式——同步传输和异步传输的区别

在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。 在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。 通常可以采用同步或异步的传输方式对位进行同步处理。 1. 异步传输(Asynchronous Transmission):异步传输...

DavidLiu的博客 9万+

从0玩转Mamba神经网络:理论+实战的保姆级教程

Mamba神经网络是一种基于状态空间模型(SSM)的高效序列处理架构,相比Transformer具有更快的推理速度和更低的内存消耗。本文提供从理论到实践的完整指南,详细讲解Mamba的工作原理、与Transformer的差异,并给出基于PyTorch的文本分类实战示例。教程包含环境配置、数据处理、模型搭建、训练评估全流程,展示了Mamba在IMDb情感分析任务中的应用。文章还探讨了Mamba的性能优势及进阶方向,为开发者提供了探索这一新兴技术的实用指南。通过阅读本文,读者可以快速掌握Mamba的核心概念并上

FJN110的博客 316

同步调相机启动与并网控制技术方案

同步调相机起动与并网控制技术方案采用背靠背变流器系统,通过静止变频器(SFC)策略实现无原动机驱动的同步电机从静止到同步转速的平稳起动。方案详细阐述了硬件自检、模块初始化、转子位置检测等关键环节,重点解决启动转矩为零、冲击电流大等挑战。系统基于STM32或C2000系列控制器,包含网侧/机侧变流器、检测保护单元及通信接口,通过励磁脉冲和电压响应分析实现高精度转子初始定位,为后续并网提供必要条件。代码级实现涵盖了ADC自检、数字IO验证及通信端口测试等核心功能。

huanghm88的专栏 307

同步通信与异步通信的区别

接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。③同步这种方式中因为分组相比异步则大得多,称为一个【数据帧】,很长一段数据才会有额外的辅助位负载【独特的bit串作为启停标识】,所以效率更高,更加适合对速度要求高的传输,当然这种通信对时序的要求也更高。在数据中根据所添加的标记信号位的不同方式,分成同步通信和异步通信两种。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在【低速】的传输中。

m0_63893772的博客 1803

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

同步和异步的概念与区分

同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。 异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 举个不太恰当的例子,就像: SendMessage(…)...

ALex_zry的博客 1236

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

阻塞和非阻塞、同步和异步的概念

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。 1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication) 所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。 换句话说,就是由调用者主动等待这个调用的结果。 而异步则是相反,调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发

Merlin的博客 1276

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

编程中同步和异步的概念

同步和异步,相信学过编程的都知道,并且经常在使用,但是要表达出来的时候却感觉只能意会不可言传。 平常说的同步和异步一般局限在线程。 同步,并不是按字面意思的同时或一起,而是指协同步调,协助、相互配合。是按先后顺序执行,如平常大家讨论问题时说,让我说完:意思是说我说完你再说。 比如说线程A和线程B一块完成某个功能,线程A执行到某个步骤是需要线程B的执行结果,于是就停下来示意线程B执行,线程B得

gx_wqm的专栏 3207

网络编程-同步和异步的概念

https://blog.youkuaiyun.com/baidu_35692628/article/details/78362744 序言 同步和异步的主要区别。 1. 同步的概念 同步就是一直等到消息或返回值后才执行其他的事情。即在等待消息的时候不做其他事情 比如两人约定见面,在等到对方的时候不做其他事情一直等 同步可以理解为单线程。线程请求一个方法后就等待这个方法给它回复,否则就不往下执...

u010029439的博客 596

并发、并行、串行、同步、异步的概念和关系

因对于并发、并行、串行、同步、异步概念上的划分,以及它们之间的关系有些模糊,故记录下这篇文章,方便以后查阅。本文还涉及到这些内容在编程上的延伸。

tangzhenyu0101的博客 1371

并发并行和同步异步的概念

文章目录并发和并行并发并行同步和异步同步异步 并发和并行 并发 指在某一时间段多个程序(任务)都是串行执行的,而不是在某一个时间点上都处于运行状态。一个时间点上只有一个程序或任务在运行。在同一时间中多个线程运行,如果系统只有一个cpu则它不可能同时进行一个以上的线程,只能对cpu运行时间进行划分,再将不同的线程安排到不同的时间中去运行。 个人理解:也就是说并发是指,一段时间里运行多个程序或者是任...

Bcdlbgm的博客 481

转载-同步和异步的概念

同步和异步的概念转载来源:解释一:解释二:解释三:同步、异步、阻塞和非阻塞的概念同步异步阻塞非阻塞 转载来源: 同步与异步的概念 来源:博客园 作者: rainbow70626 今天看到《WIN32多线程程序设计》的同步控制时,才发现原来自己对同步和异步的概念很模糊,甚至混淆。 下面都是高人们的见解,简单明了。 解释一: 同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。 异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。 解

share something here 376

JS中的同步任务和异步任务的概念以及区别

JS中的同步和异步 单线程语言 js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。如果一个任务耗时过长,那么后面的任务就必须一直等待下去,会拖延整个程序,常见浏览器无反应,可能就是一段代码死循环,造成程序卡住在这个位置,无法继续。而js之所以会是单线程语言的原因和它的用途有很大的关系,我们都知道,JavaScript作为浏览器的脚本语言,主要用来实现与用户的交互,利用JavaScript,我们可以实现对DOM的各种各

zzh1251994430的博客 1514
上一篇: Putty和Xming创建远程GUI的SSH连接
下一篇: Python3实现简单爬虫及一些编码问题
Parle
博客等级 码龄14年 36粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值