架構師之路012 同步互斥

2021-09-23 18:33:47 字數 721 閱讀 2275

原子操作

互斥體等待組

條件變數

管道訊息傳遞

原子操作是cpu提供的能力 與作業系統無關

不會中途被人打斷

一般就是lock unlock

鎖的確會導致**序列執行 併發度非常高的情況下 序列效能會顯著降低

比鎖快的 只有原子操作

channel 的每個操作必然是有鎖的 每個操作都比較耗時

鎖最大的問題 就是不容易控制

go 語言 有defer 語法保證配對

鎖不容易控制的另乙個表現是 鎖粒度的問題

網路io少數特殊情況下 可能會出現慢請求 需要好幾秒才返回 對伺服器來說 好像是掛了 無法處理請求

不要在鎖裡執行耗時的操作

絕大部份只放讀操作 少量情況寫操作

讀寫鎖寫操作擋在外面 等待讀操作執行完

讀操作不阻止讀操作

阻止寫操作

寫操作 阻止一切 不管是讀操作還是寫操作

條件變數強大到channel 這樣的通訊機制都可以用它來實現

初始化傳入乙個互斥體

如何在執行體之間傳送訊息

管道管道的用處有很多 乙個比較常見的用法是讀寫轉換

go 語言引入的channel 也是管道 只不過是型別安全的管道

鎖在一些人的心中是有誤解的 實際上鎖在服務端程式設計中的比重並不低

條件變數是最複雜的同步原語 功能強大 值得細細體會

訊號量被條件變數所取代了

架構師之路

隨著經驗能力的增長,程式的程式設計習慣也在發生著改變,以下是我個人程式設計習慣的改變。1級 思考一段時間,寫一段 2級 用圖形幫助思考,然後寫 3級 將思考過程寫成注釋,然後再寫 4級 用圖形幫助思考,然後一邊寫注釋,一邊寫 5級 思考過程中增加對不確定技術點的測試。6級 將思考過程寫在記事本裡,將...

架構師之路

方 秒殺系統架構優化思路 分布式id生成器 網際網路架構,如何進行容量設計 執行緒數究竟設多少合理 單點系統架構的可用性與效能優化 關於負載均衡的一切 異構伺服器負載均衡及過載保護 lvs為何不能完全替代dns輪詢 究竟啥才是網際網路架構 高併發 究竟啥才是網際網路架構 高可用 100億資料1萬屬性...

架構師之路

架構的定義 我們來看看軟體架構的一般定義 程式和計算系統軟體體系結構是指系統的乙個或多個結構。該結構包括軟體的構建,構建的外部可見屬性以及它們之間的相互關係。該體系結構不是可操作的軟體。具體來說,這是乙個表示式,它使軟體工程師能夠 分析滿足監管要求的設計有效性。在設計更改相對容易的階段,請考慮架構的...