c lock的使用及注意事項

2022-02-22 22:58:06 字數 930 閱讀 9886

lock:該關鍵字將語句塊標記為臨界區,方法是獲取給定物件的互斥鎖,執行語句,然後釋放該鎖。

舉例:

單件模式

public

class

singleton

public

static

singleton getinstance()}}

return

instance;}}

說明:

單間模式中就用到了lock,是一次只能有乙個例項。此例中syncroot若為null則會丟擲argumentnullexception異常,

所以總結如下:

1. lock的物件不能為null;

2. lock時如果有別的程序訪問lock變數或lock{}裡的內容,則不是跳過,而是等待,等待lock結束後再訪問;

3. msdn裡的一句話: 

lock確保當乙個執行緒位於**的臨界區時,另乙個執行緒不進入臨界區。如果其他執行緒試圖進入鎖定的**,則它將一直等待(即被

阻 止),直到該物件被釋放;

4. lock(this)請不要使用,this指的是整個外層方法,當鎖住後導致別的程序也無法訪問該方法,應lock乙個不影響其他操作的私有對  

象, 如static 的object 物件

例如單件模式中的syncroot ;

5. 在使用lock的時候,被lock的物件(locker)一定要是引用型別的,如果是值型別,將導致每次lock的時候都會將該物件裝箱

為 乙個新的引用物件(事實上如果使用值型別,c#編譯器(3.5.30729.1)在編譯時就會給出乙個錯誤)。

wllvm使用及注意事項

export llvm compiler llvm gcc export llvm gcc prefix export llvm compiler path path to llvm 2.9 release asserts bin 這裡不能填llvm gcc的路徑,不然在extract bc的時候會...

WFP TreeView使用及注意事項

最近接手wpf的專案,從0開始,做些積累 hierarchicaldatatemplate hierarchicaldatatemplate顧名思義,分層資料模板,就是用來定義分層資料樣式的模板,一般多用於menuitem和treeviewitem datatype指定模板用於哪種資料型別 item...

索引的使用及注意事項

索引是資料庫對原始資料的一列或多列進行排序的一種結構,分為聚集索引和非聚集索引。聚集索引就像書的目錄一樣,排序結構和原表的一致 而非聚集索引就像字典的偏旁查詢一樣,排序順序和字典的不一樣,只是指出它在哪一頁。索引又分為單列索引和聯合索引,單列索引很容易理解,就是對某一列進行排序。聯合索引就是對多列排...