什么是并发,并行

Posted on Wed, 25 Dec 2024 10:34:44 +0800 by LiangMingJian


什么是并发

并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。并发是会抢占资源的

什么是并行

并行(Parallel),当系统有一个以上CPU时,可以让一个CPU执行一个进程,另一个CPU执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式称之为并行,决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以并行。并行是不会抢占资源的

并行和并发的区别

  • 并发,指的是多个事情,在同一时间段内同时发生了
  • 并行,指的是多个事情,在同一时间点上同时发生了
  • 并发的多个任务之间是互相抢占资源的
  • 并行的多个任务之间是不互相抢占资源的
  • 并发是一个处理器多条等待队列
  • 并行是多个处理器多条等待队列

并发的两种情况

  • 一种是严格意义上的并发,即所有的用户在同一时间点做同一件事或操作,这种操作一般指做同一类型的业务。比如,所有用户同一时刻做并发登陆,同一时刻做表单提交。
  • 另外一种并发是广义范围的并发,这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或都操作可以是相同的,也可以是不同的。比如,在同一时刻有用户在登录,有用户在提交表单

并发编程的性能消耗?

  • 在使用多线程时,线程的上下文切换会消耗性能,消耗时间
  • 其次是资源限制问题。由于程序的执行速度受限于计算机硬件资源或软件资源。例如,服务器的带宽只有 2Mb/s,某个资源的下载速度是 1Mb/s 每秒,即使系统启动 10 个线程下载资源,下载速度不会变成 10Mb/s,所以在进行并发编程时,要考虑这些资源的限制。硬件资源限制有带宽的上传/下载速度、硬盘读写速度和CPU的处理速度。软件资源限制有数据库的连接数和socket连接数等。
  • 对于硬件资源限制,可以考虑使用集群并行执行程序。既然单机的资源有限制,那么就让程序在多机上运行,搭建服务器集群,使用不同的机器处理不同的数据。
  • 对于软件资源限制,可以考虑使用资源池将资源复用。比如使用连接池将数据库和Socket连接复用,或者在调用对方 webservice 接口获取数据时,只建立一个连接。

并发编程的优势

在实现网络资源的断点续传时,通过将资源进行切分为不同大小的任务,启动多线程下载。这样即使在网络阻塞时,下载速度的减速效果也没这么明显。这便是多线程的优势,即使一个线程由于网络阻塞被卡住,但可能会有另一个线程正处在慢启动的最终加速阶段,这样总体的下载速度就明显优于单线程。