浅谈并发和并行

并发和并行这两个概念在我的脑子里一直是很混乱,趁着清明节放假,好好地在网上了解了下,感觉有了点头绪,特意分享下,如果有了解不对的地方,还望大家指正。

首先来看看网上对并发和并行比率最多的定义:

并发:指两个或多个事件在同一时间间隔内发生

并行:指两个或者多个事件在同一时刻发生

好了,其实,并发和并行从宏观上来讲都是同时处理多路请求的概念。大家看好这句话,是宏观里的“同时”,为什么这么说?可以理解为:我们可以将就的认为事件在并发和并行中是在同时发生的,但其实并不是。从微观上说,同时发生只出现在并行里,并发只是间断执行。就如同网上的一句话里说的:

“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行

好了,这么看就比较清楚了。其实以现在单核CPU和多核CPU的例子更能清楚地了解它们的区别吧。两个线程在单核CPU中在某一时刻只能运行一个,两个线程的运行其实就是分时的在CPU中切换的过程,这其实就是并发;而出现了多核CPU后,两个线程可以在不同的CPU上面真正的同时运行,这就叫并行。当然,在多核CPU中,并发也是普遍存在的。

下面这张图应该可以简单地描述下他们的区别:

那好,理论知识其实就这么多,但是并发和并行用在其他方面都会有一些变化,或者偏离了本身的定义。所以在使用中也要注意区分,比如和我们相关的网络服务器的并发概念:

在服务器上,并发是指同一时刻能处理的连接数

在同一时刻,服务器上能建立或维护多少个TCP连接,服务器的并发量就是多少。当然,我们其实并不关心他们都在干什么,因为他们的请求各不相同。所以,在做服务器的性能测试时,并不能只关心某一个接口的并发数,而是要综合考虑各个接口的权重并制定计划,才能获得最接近真实的性能数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容