1 q( W6 l9 i3 S# |) p/ C9 [为什么是并发1 M- z7 ^+ Z2 N7 O
计算机世界的快速发展离不开 CPU、内存和 I/O 设备的高速发展,但是这三者一直存在速度差异性问题,我们可以从存储器的层次结构可以看出" I- f. `5 f( e- m( S
X# H ?/ q6 b: H9 d( v, c $ i) g, b- |2 G* J0 j4 x 6 l+ {7 B$ Z/ R) R8 B! n : l) H& y' N3 f T& p' u3 V6 w) b4 Z7 R7 J% U& K# ?) D" C3 _+ J0 j# N+ B* [
CPU 内部是寄存器的构造,寄存器的访问速度要高于高速缓存,高速缓存的访问速度要高于内存,最慢的是磁盘访问。 : x* W$ N6 c& A) N! A: {0 S. P3 g1 q' D. j+ b9 i5 ]0 P' k
# e/ b9 b$ e) {- M, X7 U) ?程序是在内存中执行的,程序里大部分语句都要访问内存,有些还需要访问 I/O 设备,根据漏桶理论来说,程序整体的性能取决于最慢的操作也就是磁盘访问速度。 + D8 S( T+ {& e4 B; S% f $ n8 p6 `) ?( I& }, d# P0 t: Z% e' }4 }% W1 `% q
因为 CPU 速度太快了,所以为了发挥 CPU 的速度优势,平衡这三者的速度差异,计算机体系机构、操作系统、编译程序都做出了贡献,主要体现为:+ H! [) E" A; J K' r( I
6 a) X- C/ C3 |5 E) D $ F9 h5 T1 U/ V+ o$ V7 rCPU 使用缓存来中和和内存的访问速度差异* O2 Y9 e$ _1 s9 w$ m& t( J; Q
操作系统提供进程和线程调度,让 CPU 在执行指令的同时分时复用线程,让内存和磁盘不断交互,不同的 CPU 时间片 能够执行不同的任务,从而均衡这三者的差异 : |* ~, g, t3 v$ X9 Y: f7 h编译程序提供优化指令的执行顺序,让缓存能够合理的使用 - t, M P) b5 ]' @" M3 f我们在享受这些便利的同时,多线程也为我们带来了挑战,下面我们就来探讨一下并发问题为什么会出现以及多线程的源头是什么 ! d: x+ v. g) N+ N, Y: V) A" w% y2 W# G- y! U' b; z4 [
( V, R% M) q, P总结 . j" e9 l; [/ U: M G+ @/ N0 p" X+ C% H我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。$ d+ |9 ^- E; M% j0 y
1 o* e) g: _) T$ J1 B2 V. a a) j0 j3 t2 c8 c( \$ V. m2 o/ t4 H- a
面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!如果你需要这份完整版的面试真题笔记,只需你多多支持我这篇文章。 ; p& J' y- F b3 Q& _5 s$ J+ C! C# X————————————————4 a, r. n) o" a4 c$ I
版权声明:本文为CSDN博主「m0_58397045」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 s$ e% m) i5 F' D
原文链接:https://blog.csdn.net/m0_58397045/article/details/119215049% \3 F& @1 ?. Q3 r( u
3 g9 Q* K/ y8 U0 c( F. ?5 W5 E" p X1 y% g0 l& _8 H4 @3 `: F