为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence)
本文所討論的計算機模型是Shared Memory Multiprocessor,即我們現在常見的共享內存的多核CPU。本文適合的對象是想用C++或者Java進行多線程編程的程序員。本文主要包括對Sequential Consistency和Cache Coherence的概念性介紹并給出了一些相關例子,目的是幫助程序員明白為什么需要在并行編程時關注Sequential Consistency。
Sequential Consistency(下文簡稱SC)是Java內存模型和即將到來的C++0x內存模型的一個關鍵概念,它是一個最直觀最易理解的多線程程序執行順序的模型。Cache Coherence(下文簡稱CC)是多核CPU在硬件中已經實現的一種機制,簡單的說,它確保了對在多核CPU的Cache中一個地址的讀操作一定會返回那個地址最新的(被寫入)的值。
那么為什么程序員需要關心SC呢?因為現在的硬件和編譯器出于性能的考慮會對程序作出違反SC的優化,而這種優化會影響多線程程序的正確性,也就是說你用C++編寫的多線程程序可能會得到的不是你想要的錯誤的運行結果。Java從JDK1.5開始加入SC支持,所以Java程序員在進行多線程編程時需要注意使用Java提供的相關機制來確保你程序的SC。程序員之所以不需要關心
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库性能调优之后,进一步的验证和分析
- 下一篇: 算法工程师如何改进豆瓣电影