CPU时间分片、多线程、并发和并行
1、CPU時間分片、多線程?
如果線程數不多于CPU核心數,會把各個線程都分配一個核心,不需分片,而當線程數多于CPU核心數時才會分片。
2、并發和并行的區別
并發:當有多個線程在操作時,如果系統只有一個CPU,把CPU運行時間劃分成若干個時間片,分配給各個線程執行,在一個時間段的線程代碼運行時,其它線程處于掛起狀態。這種方式我們稱之為并發(Concurrent)。并發=間隔發生
并行:當系統有一個以上CPU時,則線程的操作有可能非并發。當一個CPU執行一個線程時,另一個CPU可以執行另一個線程,兩個線程互不搶占CPU資源,可以同時進行,這種方式我們稱之為并行(Parallel)。 并行=同時進行
區別:并行是指兩個或者多個事件在同一時刻發生;而并發是指兩個或多個事件在同一時間間隔內發生。
并行是同時做多件事情。
并發表示同時發生了多件事情,通過時間片切換,哪怕只有單一的核心,也可以實現“同時做多件事情”這個效果。
根據底層是否有多處理器,并發與并行是可以等效的,這并不是兩個互斥的概念。
舉個我們開發中會遇到的例子,我們說資源請求并發數達到了1萬。這里的意思是有1萬個請求同時過來了。但是這里很明顯不可能真正的同時去處理這1萬個請求的吧!
如果這臺機器的處理器有4個核心,不考慮超線程,那么我們認為同時會有4個線程在跑。也就是說,并發訪問數是1萬,而底層真實的并行處理的請求數是4。
如果并發數小一些只有4的話,又或者你的機器牛逼有1萬個核心,那并發在這里和并行一個效果。
也就是說,并發可以是虛擬的同時執行,也可以是真的同時執行。而并行的意思是真的同時執行。
結論是:并行是我們物理時空觀下的同時執行,而并發則是操作系統用線程這個模型抽象之后站在線程的視角上看到的“同時”執行。
轉載于:https://www.cnblogs.com/amunamuna/p/10072036.html
總結
以上是生活随笔為你收集整理的CPU时间分片、多线程、并发和并行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦幻西游手机版和电脑版差别(梦幻西游手机
- 下一篇: gunicorn部署Flask服务