谈谈对并发、并行、同步、异步的理解

本文探讨了并发、并行、同步和异步的概念。任务定义的模糊性使得并发和并行的界定并不清晰。并发指在一定时间内处理多个任务,而并行则是在任何时候都有多个任务同时处理。虽然常将并发与多线程混淆,但实际上单线程通过快速任务切换也可实现并发。同步意味着任务间存在依赖关系,需按顺序执行,而异步则允许任务无特定顺序地独立执行。
摘要由CSDN通过智能技术生成

并发和并行,同步和异步,这几个名词往往令人糊涂,它们也曾让我困惑好一段时间。在查阅了一些文章,并结合个人的思考和理解以后,我得出了以下结论:

任务的定义

无论是并发、并行也好,还是同步、异步也好,其实都离不开任务这个概念。然而,任务的概念却很难具体定义。一个任务对应一个cpu算术运算?一个函数?还是一串函数的执行?并且,一个任务往往是可再分的,所以很多时候一个任务的多个步骤又可以看作不同的任务,而具体如何定义,没有标准规则。所以并发与否取决于你如何界定一个任务。同时,由于任务定义的模糊性,同步和异步的界定并不清晰。

并行和并发

并发:在一个时间段内,有多个任务被处理。 

并行:在任一时刻,有多个任务被处理。

上述的并行是一种绝对的并行,实际上即使是多核cpu也不能保证某几个任务在所有时刻都是被同时被执行的。然而我们仍然讨论并行,是因为我们忽略了主要任务之外的其它任务的执行。

并发不等于多线程

很多时候,我们都会把并发和多线程画上等号,但并发不一定是多线程的。最直观的例子就是单线程的分时操作系统,它是依靠在不同任务之间快速切换来达到并发处理的效果的。(JavaScript的执行模型也是单线程的,但它依靠异步来完成并发)

同步和异步

同步:多个任务之间是顺序执行的,并且前一任务完成之前,后一任务无法或者不能进行,也就是说&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值