併發編程及併發編程的核心

核心:基於資源狀態的調度方式的控制權問題:有鎖無鎖調度程序員

線程:基於內核的鎖調度;編程

其它:應用層自我調度;服務器

 

併發編程 

  在過去的30年裏,計算機的性能是在摩爾定律的推進下,從如今開始,這將由Amdahl定律決定。編寫代碼,有效地利用多個處理器能夠是很是具備挑戰性的。" -Doron Rajwan  多線程

 

Amdahl's Law每一個程序都分爲串行與並行部分,下降串行的比重,可提升程序的效率。架構

  

  進行多核多服務器時代,並行併發模式更是對程序員的挑戰,如今所謂的Thread Programmer世界上也是爲數很少,由於線程表面上好像很容易,但在實際應用中真正應付大負荷運算時,原來的線程設計方案漏洞百出。併發

   併發concurrency屬於問題域(problem domain), 並行parallelism屬於( solution domain)。並行和併發的區別在於有無狀態,並行計算適合無狀態應用,而併發解決的是有狀態的高性能; 有狀態要着力解決併發計算,無狀態要着力並行計算,雲計算要能作到這兩種計算自動伸縮擴展。dom

  併發主要是要解決資源爭奪,併發通常發生在數據聚合的地方,只要有聚合,就有爭奪發生,傳統解決爭奪的方式採起線程鎖機制,這是強行對CPU管理線程人爲干預,線程喚醒成本高,新的無鎖併發策略來源於Java的NIO或Node.js,經過隊列+單線程操做資源的方式巧妙避免了多線程,因爲只有一個線程,在多核狀況下增長了並行計算的機會性能

  併發模型分兩種,併發基礎線程和併發組件模型,併發組件模型讓使用者接觸不到基礎線程概念,是一種簡化。做爲一個高級集成架構師,應該在程序範式的高級層次定義併發,基於組件級別的併發,而且儘量地避免涉及線程概念以及線程池等底層概念。雲計算

  實現併發的途徑有兩種,基於線程和基於事件,基於線程與基於事件的併發編程之爭url

 

https://www.jdon.com/46921

相關文章
相關標籤/搜索