多執行緒中共用資源
1、多執行緒中的共用資源必須要被保護
a、避免導致程式運算錯誤
=>多執行緒的執行環境中,執行緒輪流使用虎理器的資源做運算,當然也輪流休息。如果A執行緒休息的時間,有其他的執行緒修改A執行緒所使用的物件狀態;等A執行緒下次執行,就會產生錯誤的結果。
=>因此在多執行緒中,我們使用一些機制,保護多執行緒中共資源的狀態,這就稱之為同步化(Synchronization)
2、保護共用資源方式
a、Synchronization Lock
b、Monitor
c、Mutex
d、Semaphore
e、ReaderWriterLock
f、Interlocked
========================
Synchronization Lock(最常用)
1、確保程式碼區塊執行到完畢,不受其它執行緒打斷
a、C#:使用lock程式碼區塊
b、VB:使用SyncLock程式碼區塊
2、在方法宣告時使用Methodlmpl標籤
a、設定MethodlmplOptions.Synchronized
b、鎖定範圍為整個方法
=>保護共用資源的最簡單的方法,就是直接鎖定程式,讓程式只有一個執行緒執行,稱之為同步化鎖定(Synchronization Lock)。
=>使用時注意:鎖定愈短愈好,避免Thread排隊,多資源利用避免DeadLock
沒有留言:
張貼留言