并发和并行的区别
- 并发:一段时间有很多事情要做,强调要做,事情已经发生
举例:一条道路,有很多车辆等待通过。这是并发 - 并行(parallel): 互相不干扰的同一时刻做几件事,强调在做
举例:同一时刻,多条车道,每条车道上同时有多辆互补干扰的在跑,这是并行
并行是并发的解决办法之一
常见并发的解决途径
方法 | 说明 | 生活举例 |
---|---|---|
队列 | 1. 排队(队列)是一种天然解决并发的方法 2.行成的队列的排队区,就是缓冲区 3.如有多个队列,会有优先队列 例如:Queue模块的类Queue、LifoQueue、PriotityQueue | 1.一个打饭窗口,陆续涌入的人,排队,行成的队就是队列 2.整个队列那块地方就是缓冲区 3.有两队人排一个窗口,女士优先,女生队列就是优先队列 |
争抢 | 争抢是通过锁机制实现,谁抢到资源谁就上锁,排他性的锁,其他人只能等候 | 打饭窗口不实行排队机制,谁抢到谁占用窗口资源,一直等到这个人用完,轮到一下个,这种叫争抢,窗口被占用,其它人无法使用,是一种锁机制 |
预处理 | 将热点数据提前准备好,提前加载用户需要的数据的思路,缓存常用 | 窗口预先统计热销菜,提前准备好,叫预处理 |
并行 | 属水平扩展思想 1.日常通过多买服务器,多开线程,进程来实现 2.服务器多机、分布式都是并行处理 3.注意:如果线程在单CPU上处理,就不是并行了(属于串行) | 开通多个打饭窗口,并行打菜 |
提速 | 提高单个CPU性能,或单个服务器安装更多CPU,属于垂直扩展思想(将一个CPU当成几个CPU使用,称为虚拟化) | 提高单个窗口的打菜速率, |
消息中间件 | 消息队列服务中用于过滤、区分和根据规则进行转发的程序(解耦和缓冲),可以理解为容纳队列的一个容器,分布式系统中更为常见 | 排队的那块区域,消息中间件详细解释:https://www.cnblogs.com/lifeibai/p/9167701.html |
并行和串行哪个更快?
并行和串行哪个更快,主要看处理频率
- 例如:多辆车通过一车道和多车道,主要看路面情况,如果同样路面情况下,那无疑是并行处理效率更高,但如果并车车道路况不佳,单位时间内的处理总频率小于单车道处理总频率,那就是串行更快。所以串行和并行哪个更快,主要看单位时间内处理数据的频率