并发和并行的区别

所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。

    并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。
 
并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。

------------------------------------------------------------------

并行,是每个cpu运行一个程序。

打个比方。并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。


    并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

    在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

①程序与计算不再一一对应,一个程序副本可以有多个计算
②并发程序之间有相互制约关系,直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。
③并发程序在执行中是走走停停,断续推进的。

    在网络服务器上,并发是指同一时刻能处理的连接数,比如,服务器能建立1000个TCP连接,即服务器同时维护了1000个socket,这个服务器的并发量就是1000,但是服务器可能只有单核或者8核,16核等,总之对这1000个socket连接的处理也是分时来做的。每个socket服务器处理的时间如果是1s,那么该服务器1s内可以处理完1000个请求,如果每个socket处理100ms的话,那么该服务器1s内可以处理10000个请求。


    在这里我们先抛出一些概念,如果这些概念都弄清楚了,并发和并行基本就清楚了。

    会话:在我们用电脑工作时,打开的一个窗口或一个Web页面,我们可以把它叫做一个“会话”,扩展到web服务器上,要维护很多个用户的web页面访问,我们可以认为服务器管理了多个“会话”。

    并发连接数:网站有时候报错:“HTTP Error 503. The service is unavailable”。但刷一两下又正常,估计很可能是超过网站的最大并发连接数了。并发连接指网络流量管理设备或代理服务器对其业务信息流的处理能力,是能够同时处理的点对点连接的最大数目,它反映出设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到设备所能支持的最大信息点数。

    并发可以理解为服务器最多维护多少个会话数,并行则不一样,它关系的是有多少个会话是在同时进行,假如有两台服务器(进程),可能并行的数量是2,而并发的数量是1000。我们还可以对比下吞吐量和带宽的概念。

   吞吐量与带宽的区分:吞吐量和带宽是很容易搞混的一个词,两者的单位都是Mbps。先来看两者对应的英语,吞吐量:throughput;带宽:Max net bitrate。当讨论通信链路的带宽时,一般是指链路上每秒所能传送的比特数,它取决于链路时钟速率和信道编码在计算机网络中又称为线速。可以说以太网的带宽是10Mbps。但是需要区分链路上的可用带宽(带宽)与实际链路中每秒所能传送的比特数(吞吐量)。通常更倾向于用“吞吐量”一词来表示一个系统的测试性能。这样,因为实现受各种低效率因素的影响,所以由一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发送数据。

   带宽可以理解成是并行,即同时可以有10M 个bit(0,1)在线路中传输。而吞吐量类似并发,指主机每秒可以处理2M个bit。比喻有些不是很恰当,但仔细体会下,有些类似之处。
--------------------- 
作者:liucw_cn 
来源:优快云 
原文:https://blog.youkuaiyun.com/oChangWen/article/details/51115993 
版权声明:本文为博主原创文章,转载请附上博文链接!

<think>好的,用户想了解并发(Concurrency)并行(Parallelism)的概念及区别。首先,我需要回顾一下这两个术语的定义它们在编程中的不同应用。 根据引用[1],并发是指两个或多个任务在进展,但不一定同时执行。这可以通过时间分片实现,任务的部分按顺序执行并与其他任务的部分混合。例如,单核处理器通过快速切换任务来模拟同时执行。而并行是指任务真正同时执行,通常需要多核或多处理器系统。引用[4]也提到,如果两个并发线程在单核处理器上运行,只能得到并发而非并行并行需要在多核、多处理器或分布式系统中实现。 接下来,引用[2]指出,并发是至少两个线程在进展,属于更广义的并行形式,包含时间分片这种虚拟并行。而引用[3]则强调并行性又称同时性,属于不同级别的执行方式。 需要区分这两个概念的关键点在于执行是否同时。并发关注任务的交替执行结构设计,如处理多个任务的调度;而并行关注同时执行以提高性能。例如,多线程程序在单核上是并发,在多核上才可能并行。 用户可能需要实际例子来理解区别。比如,Web服务器处理多个请求可以使用并发模型,通过异步I/O或线程池管理;而并行计算则用于同时处理多个数据块,如矩阵运算。 此外,应指出它们的应用场景:并发适用于I/O密集型任务,并行适用于CPU密集型任务。同时,错误处理、资源竞争等问题在并发并行中表现不同,需要不同的同步机制。 最后,总结它们的核心差异:并发是任务处理的模式,解决逻辑上的同时执行;并行是物理上的同时执行,依赖硬件支持。需要确保回答结构清晰,用例子帮助理解,并引用提供的资料。</think>### 并发(Concurrency)与并行(Parallelism)的概念及区别 #### 1. **核心定义** - **并发(Concurrency)**:指多个任务在逻辑上“同时”推进,但实际执行可能是交替进行的。例如,单核处理器通过时间分片(time slicing)快速切换任务,实现看似同时执行的效果[^1][^2]。 - **并行(Parallelism)**:指多个任务在物理上真正同时执行,通常需要多核、多处理器或分布式系统的硬件支持[^4]。 #### 2. **关键区别** | 特性 | 并发 | 并行 | |------------|--------------------------|--------------------------| | 执行方式 | 交替执行(逻辑上同时) | 同时执行(物理上同时) | | 硬件依赖 | 无需多核(单核可实现) | 需要多核或多处理器 | | 主要目标 | 提高资源利用率 | 提高计算性能 | | 典型场景 | I/O密集型任务、事件驱动 | CPU密集型任务(如数值计算)| #### 3. **示例说明** - **并发示例**: 一个单核CPU的Web服务器同时处理多个客户端请求。通过事件循环(event loop)或线程切换,每个请求的处理被分段交替执行,用户感知为“同时响应”。 - **并行示例**: 在多核CPU上运行矩阵乘法,每个核独立计算矩阵的一部分,最终合并结果,显著减少总耗时。 #### 4. **编程中的实现** - **并发实现**: 使用多线程、协程(coroutine)或异步编程(async/await)。例如Python的`asyncio`库或Go的`goroutine`。 ```python import asyncio async def task(): await asyncio.sleep(1) print("Task completed") asyncio.run(task()) # 异步实现并发 ``` - **并行实现**: 使用多进程或分布式计算框架。例如Python的`multiprocessing`模块: ```python from multiprocessing import Pool def square(x): return x * x if __name__ == "__main__": with Pool(4) as p: print(p.map(square, [1, 2, 3, 4])) # 4个进程并行计算 ``` #### 5. **常见误区** - **并发并行**:并发是代码结构的设计模式,并行是执行时的物理状态[^3]。 - **并行需要并发支持**:若程序未设计为并发结构(如未使用线程/进程),即使有多核也无法实现并行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值