并行 并发 串行 同步 异步

本文深入探讨了并发、并行、同步与异步的概念及其在多线程环境中的应用。解释了并行与并发的区别,以及异步调用如何提高程序效率,特别是在处理长时间运行的任务时,能提供更好的用户体验。

并行 并发 串行 同步 异步

并发
并发指两个或两个以上的事件在同一时间段内发生,具有一定的时间间隔。
并发意味着应用程序同时在多个任务上取得进展。那么,如果计算机只有一个CPU,应用程序可能不会同时完成多个任务,但在应用程序的某个时间内正在处理多个任务。它不能完全完成一个任务,然后再开始下一个任务。

并行
并行指两个或两个以上的事件在同一时刻发生。

同步
串行是同步线程实现的方式。一个任务执行完成后才能执行下一个任务,单线程只能执行一个任务。

异步
线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。

并发并行其实是异步线程实现的两种形式。并行其实是真正的异步,多核CUP可以同时开启多条线程供多个任务同时执行,互补干扰。但是并发就不一样了,是一个伪异步。在单核CUP中只能有一条线程,但是又想执行多个任务。这个时候,只能在一条线程上不停的切换任务。

异步同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

异步调用
应用场景:在实际的业务中总有这样的场景,后台执行的时间过长,前端需要立即返回结果,以取得良好的客户体验。

异步调用的概念?
异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行。

如何实现异步调用?
多线程就是一种实现异步调用的方式。
多线程并不等同于异步,异步才是最终目的。

### 串行并行并发异步同步的概念及区别 #### 串行 串行是指多个任务按照严格的先后顺序依次执行,即一个任务只有在其前驱任务完全结束后才会开始。这种方式简单直观,在单核处理器上较为常见[^2]。 #### 并行 并行意味着在同一时刻有多个计算资源(如CPU核心)同时处理不同的任务片段或不同任务。真正的并行能够显著提升性能,因为它充分利用了硬件的多核特性[^1]。 #### 并发 并发描述的是系统能够在短时间内交替快速响应多个任务的能力,即使这些任务实际上可能并未真正意义上的“同时”发生。在现代操作系统中,通过时间片轮转等方式使得看似多个任务几乎是在同一时间内被执行。值得注意的是,并发不一定涉及实际的同时性;它更强调的是对外界表现出能高效管理多项工作的能力[^3]。 #### 同步 同步模式下,当前的操作必须等到前面的操作完成后才能继续进行下去,这通常涉及到阻塞等待直到某个特定条件满足为止。这样的机制有利于保障数据的一致性和准确性,但也可能导致效率低下,尤其是在网络通信或者I/O密集型应用场合[^4]。 #### 异步 相比之下,异步允许发起一个新的请求而不必立刻得到回应就可以去做其他事情,一旦收到结果通知再回来处理后续逻辑。这样做的好处是可以提高吞吐量和用户体验流畅度,因为主流程不必因某些耗时较长的任务而停滞不前。为了支持异步行为,往往借助回调函数、Future/Promise对象或是协程等高级抽象来简化编程模型。 ```python import asyncio async def async_task(): print('Task started') await asyncio.sleep(1) # Simulate an asynchronous operation with sleep. print('Task finished') # Running the asynchronous task using event loop. loop = asyncio.get_event_loop() loop.run_until_complete(async_task()) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值