首先,就我個人的意見,實際工作中,如果介面只涉及到資料的查詢,我感覺是沒有必要加鎖的,只有那些涉及到資料的更新時,才考慮加鎖。
1、樂觀鎖和悲觀鎖
上一章我們討論到了自旋鎖以及其優化的各種鎖,從某種意義上來說,由於這種鎖是以共享變數一定會被執行緒同時修改這種悲觀的想法設計的,所以有些地方稱之為悲觀鎖,所以以辯證法的觀點來看,是不是有一種樂觀鎖,只有當確實發現共享變數被多個執行緒同時修改了,才做處理呢?這樣就能在保證資料的一致性的前提下,大量減少資源的開銷,這種鎖確實是存在的。
2、樂觀鎖與cas
樂觀鎖是如果實現的呢?首先來看一下例子
如上圖的第三步,其實是硬體指令comare and swap(cas),能保證原子執行。
讀碼農翻身之TCP IP
這就是三次握手啊,我給你分析一下啊,這三次握手主要是為了驗證我這邊和縣衙那邊的發信 收信能力沒問題,這樣就證明連線是通的,可以正式發貨了。第一次握手 京城發信,縣衙收到了,此時縣衙就會明白 京城發信能力和自己的收信能力是沒問題的。第二次握手 縣衙發信,京城收到了,此時京城就會明白 京城的發信和收信都...
讀碼農翻身之作業系統
1 基本流程 程式首先儲存在硬碟中,當被作業系統裝載後,進入記憶體,然後被cpu執行。2 作業系統裝載程式的流程 a 虛擬記憶體 每個程式可能會認為自己有較大的 如3g 的記憶體,而實際上並不是就分配給了你3g的物理記憶體,而是虛擬記憶體。虛擬記憶體中使用頁表把 在硬碟中的位置記錄下來,等真正需要執...
讀碼農翻身之MVCC 多版本併發控制
多版本併發控制要解決的問題,其實就是基於可重複讀的情況下,可以在讀的時候不用加鎖,也可以實現可重複讀。可重複讀的流程如下所示 小強在讀取b的資訊時候,需要加鎖 1 假設資料庫中有一張users的表,裡面有如下一行資料 2 先給這行資料新增兩個隱藏的字段 其中事務id表明這行資料是哪個事務操作的。事務...