并行、并发、高并发、同步、异步

tech2025-03-23  5

并行概念

(物理上)真正的同时运行——在同一时刻,多个任务同时执行 如:在多核处理器上,有两个线程同时执行同一段代码

可见,单核处理器是无法实现并行的,因为单核处理器无法在同一时刻执行多个任务。

并发的2种概念

1.形容多个任务的执行状态 (逻辑上)两个或多个任务可以在重叠的时间段内启动,运行和完成。 并行(两个线程同时执行)一定是并发 并发不一定意味着并发一定是并行。 如:一个处理器的多个任务同时执行。

2.对并发性的简称 如程序具有并发性: 不同的部分 可以无序或者同时执行,且不影响最终的执行结果。 在不同核数的计算机上的不同表现: 如: (并发也是并行)在多核计算器上可以指的是真正物理上多个任务同一时刻同时运行。 (只是并发)在单核上,只要可以相互切换,但不影响最终执行结果。 说的是并发性的简称,此时并行和并发的概念并不在同一维度上

高并发有哪些指标

QPS(Queries Per Second) 每秒请求数 带宽 PV (Page View)一天24小时访问量 UV(Unique VIsitor )一天24小时访客

并发连接数 服务器平均请求等待时间

高并发、多线程

高并发:指的是服务器同时收到很多用户的请求 多线程:是针对这种高并发的一个解决方案。 也有反例:redis,内部机制是单线程的,但是它可以解决高并发的场景。

多线程问题: 性能问题:上下文切换,保存cpu cash带来损耗 有些任务比如异构化任务,多线程反而不如单线程。 线程安全问题

同步

同步这里指的是被调用者(服务器)的行为,而不是请求方的行为。在没有得到结果之前,服务器不返回任何结果。 要等得到返回结果,才能处理其他事情。

异步

调用在发出之后,服务端会立刻返回,告诉调用方“我收到你的请求了,我会处理的”。 不用等返回结果,同时去处理别的事情了。

阻塞和非阻塞

站在线程状态的角度 站在线程发出请求的角度

例子:烧水,买书

同步阻塞: 调用者只能等待被调用者执行完成,再向下执行。 1,等待被调用者执行完成,2.而且还要去检查是否执行完成,

同步非阻塞: 调用者只能等待被调用者执行完成,再向下执行。 1,等待被调用者执行完成,2.被调用者会主动告诉执行结果,

异步阻塞: 调用者不用等待被调用者执行完成,在被调用者执行期间,同时可以去做别的任务,只需要定时检查被调用者是否执行完成。 1,调用者发出请求指令,不管了,2.被调用者不会主动告诉执行结果,需要调用者自己去检查执行情况。

异步非阻塞: 调用者不用等待被调用者执行完成,在被调用者执行期间,同时可以去做别的任务,而且被调用者会主动返回执行结果。 1,调用者发出请求指令,不管了,2.被调用者会主动告诉执行结果,不需要调用者自己去检查执行情况。

最新回复(0)