深度理解lock

2021-08-29 14:39:31 字數 921 閱讀 5777

lock

(thislock)

thislock 應該是引用型別,但(object)1 將不會真正起到作用。因為進入lock **塊時會在 thislock中加入乙個標示符。只要在這個thislock中有乙個標示符其

他執行緒就會一直等待,直到加鎖執行緒取消標示符。(object)1 雖然是乙個物件,但是當另一線程執行到lock((object)1)時會重新裝箱生成乙個匿名物件。

(object)1 類似於:

public

void

a()}

而不是:

class

classa}}

並且:通常,應避免鎖定public型別,否則例項將超出**的控制範圍。常見的結構 lock (this)、lock (typeof (mytype)) 和 lock ("mylock") 違反此準則:

以上引用自msdn。

上面列的三條,我認為嚴重程度是越來越深的。

1. lock (this) 可能會有問題,因為不受控制的**也可能會鎖定該物件。這可能導致死鎖,即兩個或更多個執行緒等待釋放同一物件。

2.執行緒同步就像是上廁所,你在上廁所前都貼一塊牌"有人在上廁所,請等待".(有lock的地方就是廁所,你的牌也總是貼到廁所上,不只是你自家的那就必然是公共的)

lock (typeof (mytype))剛好就貼在公共廁所(應該是別人家的廁所)上了,那不是害人嗎(另乙個廁所也是

lock (typeof (mytype)),如果你能保證 別的地方永遠不用

lock (typeof (mytype))那道無所謂了).

3.在整個應用程式中"mylock"都會引用到同乙個示例。為了避免別人也和你使用同樣的物件例項最好用乙個私有物件。

理解C 的Lock語法意義

一.為什麼要lock,lock了什麼?當我們使用執行緒的時候,效率最高的方式當然是非同步,即各個執行緒同時執行,其間不相互依賴和等待。但當不同的執行緒都需要訪問某個資源的時候,就需要同步機制了,也就是說當對同乙個資源進行讀寫的時候,我們要使該資源在同一時刻只能被乙個執行緒操作,以確保每個操作都是有效...

iframe深度理解

前言 如果你的頁面是乙個後台管理頁面,那麼你一定對iframe不陌生。從h5定稿開始,在涉及框架引入頁面時,統一建議使用iframe來進行相關的資源嵌入。使用場景 1 通常在不希望整體頁面跳轉,只需要主體頁面跳轉,則需要加入iframe標籤來作為展示頁面的視窗,通常在管理後台 qq郵箱等管理介面應用...

深度理解函式

我們知道每一次函式的呼叫都是乙個過程,這個過程我們通常稱為 函式的呼叫過程。這個過程要為函式開闢棧空間,用於本次函式的呼叫過程中臨時變數的儲存 現場保護。這塊棧空間被稱為函式棧幀。在理解函式的棧幀之前,我們需要了解幾個特殊的暫存器和一些彙編指令。eip 程式計數器,存放當前指令的下一條指令的位址 e...