天天看點

最近面試了很多同學,發現一個共同問題,都覺着單核cpu無法并發計算,如果應用部署在單核cpu上,多線程就無法生效,其實這

作者:架構師風吹哨

最近面試了很多同學,發現一個共同問題,都覺着單核cpu無法并發計算,如果應用部署在單核cpu上,多線程就無法生效,其實這是錯誤的了解。

并發的概念本身就是針對單核cpu來提出的,多線程在一個cpu也是可以搶占資源,切換排程的,對使用者是無感覺的。

并行是針對多核cpu來說的,并行是運作在不同cpu核心上,是以不存在資源搶占,切換排程。

一個應用部署在多核cpu上,可能是并行,也可能是并發,這取決于當時的應用情況以及cpu的排程算法。如果任務線程太多,并行無法滿足,那必然會并發執行。

應用能支援多少并發,一方面取決于硬體資源,一方面也看應用是計算型應用,還是io型應用,大多數應用都是io型的,如果是io型應用能支援的線程并發數就會很多。

網上流行io型應用線程公式2*n+1,這個公式其實并不準确,大多數情況下還得以自己實踐為準,線程太高導緻cpu頻繁搶占切換排程,浪費性能,線程太少又發揮不出應有的性能。

不管并發還是并行都是為了提高性能。

最近面試了很多同學,發現一個共同問題,都覺着單核cpu無法并發計算,如果應用部署在單核cpu上,多線程就無法生效,其實這
最近面試了很多同學,發現一個共同問題,都覺着單核cpu無法并發計算,如果應用部署在單核cpu上,多線程就無法生效,其實這
最近面試了很多同學,發現一個共同問題,都覺着單核cpu無法并發計算,如果應用部署在單核cpu上,多線程就無法生效,其實這

繼續閱讀