高併發學習(一) 概述

2021-09-24 11:38:23 字數 1023 閱讀 4193

(1)併發:同時擁有兩個或者多個執行緒。如果程式在單核處理器上執行,多個執行緒將交替地換入或者換出記憶體,這些執行緒同時「存在」的,每個執行緒都處於執行過程中的某個狀態。如果執行在多核處理器上,此時,程式中的每個執行緒將分配到乙個處理器核上,因此可以同時執行。

(2)高併發(high concurrency):是網際網路分布式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。

總結:(1)cache的出現:cpu的頻率越來遠快,相對記憶體快了乙個數量級,對於訪存的操作cpu就需要等待主存,這樣會導致資源的白白浪費。所以cache的出現是為了解決cpu與記憶體速度不匹配的問題。

cache 的工作原理是基於「區域性性」原理,它包含以下兩個方面:

2、cache帶來的問題

cache 給系統帶來效能上飛躍的同時,也引入了新的問題「快取一致性問題」。設想如下場景(cpu一共有兩個核,core1和core2): 

以i++為例,i的初始值是0.那麼在開始每個核都儲存了i的值0,當第core1塊做i++的時候,其快取中的值變成了1,即使馬上回寫到主記憶體,那麼在回寫之後core2快取中的i值依然是0,其執行i++,回寫到記憶體就會覆蓋第一塊核心的操作,使得最終的結果是1,而不是預期中的2。

為了達到資料訪問的一致,需要各個處理器在訪問快取時遵循一些協議,在讀寫時根據協議來操作,常見的協議有msi,mesi,mosi等。我們介紹其中最經典的mesi協議(用於保證多個cpu cache之間快取共享資料的一致)。

參考部落格:

java 併發 高併發概述

為什麼需要並行 有關並行的重要概念 有關並行效能的2個重要定律 多執行緒基礎 執行緒的基本操作 守護執行緒 優先順序 中斷處理 基本的執行緒同步操作 各種同步控制工具的使用 併發容器及典型原始碼分析 同步工具 併發容器使用小案例 第5課 jdk並發包 執行緒池的基本使用 擴充套件和增強執行緒池 執行...

SVN 學習筆記一(概述)

svn概述 svn是subversion的簡稱,如今她已經是apache家族的一員。作為主流的版本管理軟體,她取代了cvs,並不斷完善。如今已經是大多數軟體開發專案使用的必不可少的工具。svn到底是什麼呢?svn 是乙個時光機,我們用他可以找回過去的一些東西 當然你不可能用他來穿越 在svn中,我們...

MySQL學習記錄(一) 概述

最近在看的mysql,現在把mysql的的的中的內容都總結出來,鞏固一下。主流資料庫廠商有oracle,microsoft,informix,sybase和ibm。開源的資料庫,主要有mysql,oracle和microsoft sql server這三個庫。我學習的是mysql資料庫,看的書是 s...