1. 程式人生 > >.net 多執行緒同步方式總結

.net 多執行緒同步方式總結

在多執行緒開發中,共享物件的同步是經常遇到的問題,以下總結了C#中執行緒同步的幾種技術:

1,InterLocked原子操作

Decrement(ref int location);遞減1

Add(ref int location1, int value);location1+value

Increment(ref int location);遞增1

2,Mutex互斥鎖

WaitOne(int timeout);等待獲取鎖

ReleaseMutex();釋放鎖,記得一定要釋放,否則永遠被阻塞

3,SemaphoreSlim訊號量

SemaphoreSlim(int count);允許的併發執行緒數量

Wait();等待

Release();釋放

4,AutoRestEvent自動重置時間(核心模式)

Set();從一個執行緒向另一個執行緒傳送通知;

WaitOne();等待通知

5,ManaulResetEventSlim手動重置時間(混合模式)

Wait();等待

Set();通知

Reset();重置

6,CountDownEvent計數事件

CountdownEvent(int count);通知計數

Signal();計數(執行緒完成一定呼叫)

Wait();等待

Dispose();釋放

7,Barrier

Barrier(int participantCount, Action<Barrier> postPhaseAction);多個執行緒同步,回撥Action

SignalAndWait();執行回撥

8,ReaderWriterLockSlim讀寫鎖

EnterReadLock();獲取讀鎖(可共享讀)

ExitReadLock();釋放讀鎖

EnterUpgradeableReadLock();獲取讀鎖(可升級到寫鎖);

ExitUpgradeableReadLock();釋放升級讀鎖

EnterWriteLock();獲取寫鎖(其他執行緒不可讀寫)

ExitWriteLock();釋放寫鎖

9,SpinWait自旋等待(混合模式)

SpinOnce();自旋