1.為什么是並發
計算機世界的快速發展離不開 CPU、內存和 I/O 設備的高速發展,但是這三者一直存在速度差異性問題,我們可以從存儲器的層次結構可以看出
CPU 內部是寄存器的構造,寄存器的訪問速度要高於高速緩存,高速緩存的訪問速度要高於內存,最慢的是磁盤訪問。程序整體的性能取決於最慢的操作也就是磁盤訪問速度。
因為 CPU 速度太快了,所以為了發揮 CPU 的速度優勢,平衡這三者的速度差異,計算機體系機構、操作系統、編譯程序都做出了貢獻,主要體現為:
- CPU 使用緩存來中和和內存的訪問速度差異
- 操作系統提供進程和線程調度,讓 CPU 在執行指令的同時分時復用線程,讓內存和磁盤不斷交互,不同的 CPU 時間片 能夠執行不同的任務,從而均衡這三者的差異
- 編譯程序提供優化指令的執行順序,讓緩存能夠合理的使用
2.並發的問題
https://zhuanlan.zhihu.com/p/197727299
-
更新丟失(也稱為原子性問題)
-
降低性能,線程切換
-
可見性問題(多核CPU時代,多線程線程操作的是不同的 CPU 緩存,互相的緩存不可見)
-
-
死鎖