并发和并行程序的理解?
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 “每秒处理事务数”,它是软件测试结果的测量单位。
一个事务是指一个客户机向服务器发送请求,然后服务器做出响应的过程。客户机在发送请求是开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。