异步、同步

      异步(asynchronous)和同步(synchronous),从字面上可以理解为一个事情处理顺序的问题。同步就是下一步计划必须等待上一步完成,否则不能做其他事情;异步就是下一步计划可以不用等待上一步完成,可以先去做别的事情,然后在某个未知的时刻再回到上一步完成的地方继续工作。

     同步与异步概念可以说是无处不在,不管是生活中还是计算机领域,只是我们平时在生活中没有留意这个问题。在计算机的理论学习中应该经常会碰到这个概念的,比如硬件方面的(硬件一般都是异步的,比如I/O),然后上升到软件方面的。硬件方面比如快、慢速设备的配合上,软件方面也有很多的例子,比如Win32 API下的消息发送函数SendMessage和PostMessage一个同步,一个异步,多CPU硬件环境下的多个线程的执行也是非同步的。从人的习惯上同步是较容易代码的书写的,比如DoFunction我希望知道执行是否成功,只要判断返回值就可以。但异步就不行了,DoFunction只能说明我已经调用了这个函数或者执行完了也没有异常,但结果可能需要被动等待通知。

转载于:https://www.cnblogs.com/NewJourney/archive/2012/02/13/2349824.html

### 同步异步的概念及区别 #### 定义 同步是指一种执行模型,其中调用方会等待某个操作完成后再继续执行后续代码[^1]。而异步则是一种非阻塞的执行模型,允许调用方发起请求后立即返回并继续其他工作,无需等待当前操作的结果[^2]。 #### 执行流程 在同步模式下,程序按照线性顺序依次执行每一步操作,直到前一个任务完成后才会启动下一个任务。相比之下,异步模式允许多个任务并发运行,当某一任务准备就绪时再通知主线程进行处理[^3]。 #### 资源利用与效率 由于同步方法会在等待期间占用CPU资源,因此可能导致性能瓶颈特别是对于I/O密集型应用来说更为明显[^4]。相反地,采用异步机制可以有效减少不必要的等待时间从而提高系统的吞吐量和响应速度。 #### 应用场景 - **同步适用场合**: 当业务逻辑简单且不需要考虑高并发需求时可选用同步方式;或者是在某些特定情况下确实需要确保数据的一致性和准确性而不惜牺牲部分性能的时候也会倾向于使用同步方案。 - **异步适用场合**: 对于网络请求、文件读写等耗时较长的操作非常适合运用异步技术来提升用户体验以及服务器承载能力。此外,在构建大型分布式系统时为了实现更高的扩展性和灵活性通常也会大量依赖异步编程模型。 ```python import threading from concurrent.futures import ThreadPoolExecutor def synchronous_task(): print("Start Synchronous Task") # Simulate a blocking operation like I/O or computation. result = sum(range(10**7)) print(f"Synchronous Result: {result}") def asynchronous_task(): def async_worker(): print("Start Asynchronous Worker") result = sum(range(10**7)) print(f"Asynchronous Result: {result}") thread_executor = ThreadPoolExecutor(max_workers=1) future = thread_executor.submit(async_worker) if __name__ == "__main__": print("Running Synchronous Example:") synchronous_task() print("\nRunning Asynchronous Example:") asynchronous_task() ``` 上述代码展示了如何分别通过同步函数`synchronous_task` 和基于多线程池实现的异步函数 `asynchronous_task` 来模拟不同类型的计算任务. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值