互斥鎖(lock)併發
lock 關鍵字將語句塊標記爲臨界區,方法是獲取給定對象的互斥鎖,執行語句,而後釋放該鎖。當任何一個線程獲取到鎖後,其餘線程若是須要使用該臨界區內代碼,則必須等待前一個線程使用完畢後釋放鎖。性能
Object thisLock = new Object(); lock (thisLock) { // 臨界區代碼塊 }
讀寫鎖(ReadWriteLock)ui
ReadWriteLock定義支持單個寫線程和多個讀線程的鎖。該鎖的做用主要是解決併發讀的性能問題,使用該鎖,能夠大大提升數據併發訪問的性能,只有在寫時,纔會阻塞全部的讀鎖。this
//使用一個 System.Int32 超時值獲取讀線程鎖。 _rwlock.AcquireReaderLock(100); try { if (list.Count > 0) { int result = list[list.Count - 1]; } } finally { //減小鎖計數,釋放鎖 _rwlock.ReleaseReaderLock(); }
//使用一個 System.Int32 超時值獲取寫線程鎖。 _rwlock.AcquireWriterLock(100); try { list.Add(WriteCount++); } finally { //減小寫線程鎖上的鎖計數,釋放寫鎖 _rwlock.ReleaseWriterLock(); }