并发和并行的区别

并发

并发和并行的区别

  • 并发:并发指的是,事件同时发生。就是接下来需要完成的事件,是一种情况。

    ​ 比如一条只能同时经过一辆车的村道,如果同时有多辆车要通过,这就是一个并发的问题。现实中我们通常会使用排队的方式,让车辆一个一个通过。算法源于生活,队列是一种很常见的处理并发的方法。

  • 并行:并行是指同时完成多个事件,是并发的一种处理手段。

    ​ 在上面那个例子中,并行就是建条多车道,同时让多辆车通过。

并发

饭堂打饭模型

中午12点,开饭了,都涌向食堂,这就是一种并发。如果人很多,就是高并发。

1、队列

假设只有一个窗口,陆续涌入的人,排队打饭就是一种很好用的方法。依次打饭,每个人都能打到。使用队列的话,就必须用到缓冲区,总得有块地来搁这些人。

如果领导或者教师优先的话,那就会形成两个队列。只要领导队列有人,普通员工就必须排队,领导队列就是一个优先队列。

2、争抢

争取虽然听起来很暴力,但也不乏是一种处理方式。只要谁能挤进来就给谁打饭。作为饭堂工作人员是最简易的方式。但是有可能会有人始终都抢不到。

### 3、预处理

在开饭前先把饭菜做好打好,有人来只需要递就行了。

预处理是基于经验的,需要提前知道需要哪些菜,需要做多少菜多少饭。这是一种空间换时间的方法,需要一个地方来放置打好的饭菜。

对于计算机来说,提前将时效性不强的数据处理并常驻内存能够很好的提高速度。

4、并行

如果一个窗口不够的话,那多开几个窗口,多雇几个员工不就行了。

通过并行能够很好地从根本来解决问题,但是同时也会带来很高的成本。

计算机上可以通过购置更多服务器,多进程来解决并发问题。并行是一种水平扩展的思想。

而且还会出现资源浪费,饭堂往往到饭点食客才会多。高并发往往都是短时间的。

注意:如果是在单一cpu上进行多进程和多线程就不是并行,而是一个cpu对多个线程进行轮询处理。

5、提速

提高单一窗口的速度,也可以解决并发问题,是一种垂直扩展的思想。

但是单一的提升是有上限的,并且越接近上限就越难提升。而且如果单一的服务器挂了,那么所有的服务都挂了,而水平扩展的话,只是整体的性能降低了。

以上是处理并发比较常用的手段,当然还有其他的手段,比如消息中间件。高并发问题通常需要根据场景选择多种手段相结合来解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值