并发和并行程序的理解?

concurrent and paraller programming

并发

并发,对于单个 CPU 的操作系统在进行多线程操作时,将 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行,
在一个时间段内只运行一个线程,其它线程处于挂起状态。

并行

并行,对于多 CPU 系统执行多线程操作时,一个 CPU 在执行一个线程时,另一个 CPU 执行另一个线程,两个线程互不强 CPU 资源,可o以同时进行。

A、B、C 三个线程在一个时间段内分时并发执行

C  |      ===      ===             
B  |   ===      ===                                                              
A  |===      ===                                                                
   |——————————————————————————————>                                            

A、B、C 三个线程在一个时间段内同时并行执行

C  |===========================
B  |===========================
A  |===========================
   |——————————————————————————————>                                            
  • 并发是一个 CPU 分时(轮流)处理多个任务
  • 并行是多个 CPU 同时处理多个任务

QPS 和 TPS

并行,多个 CPU 或者多台机器同时执行一段处理逻辑,是真正的同时。

并发,通过 CPU 调度算法,让用户看上去同时执行,实际从 CPU 操作层面上看不是真正的同时。
并发场景往往有共用的资源,那么针对这个公共资源往往产生瓶颈,我们会用 QPS 和 TPS 来反应这个系统的处理能力。

QPS

Queries Per Second “每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定所处理流量多少的衡量标准。

TPS

Transiation Per Second “每秒处理事务数”,它是软件测试结果的测量单位。

一个事务是指一个客户机向服务器发送请求,然后服务器做出响应的过程。客户机在发送请求是开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

作者:PP杰

出处:http://www.cnblogs.com/newber/

博学之,审问之,慎思之,明辨之,笃行之。

原文地址:https://www.cnblogs.com/newber/p/14540889.html