-
例如,如果要修改集合,但該集合可能有多個執行緒訪問它。 執行緒對集合進行不同的更改,這可能會導致集合狀態不穩定。 因此,在對集合進行更改時,請為執行緒提供鎖,鎖定它,修改集合,然後釋放鎖,以便其他程序可以繼續訪問該集合而不會出現問題。
lock(lockobj)
lockobj 是鎖,引用型別物件的物件型別,如何定義它並不重要,但不要使用 public 型別的物件作為鎖(這個或 typeof() 實際上是一種非常糟糕的寫法,它很可能會死鎖)。
引號的內容是鎖定的段,在此期間,其他執行緒必須等待並且無法進入。
如何在類中編寫的示例:
class a
private readonly object syncroot = new object();
public void clear()
lock(syncroot)
unsafeclear();
另外,你說的等待時間到底是多少?
-
Lock 物件一次只能由乙個執行緒訪問。 如果你有乙個執行緒死了,沒有出口。 然後其他執行緒無法進入。 將導致死鎖。
如果要自定義時間,請查詢 ManualResetEvent 和 AutoResetEvent
-
lock 關鍵字可用於確保塊完成而不會被其他執行緒中斷。 這是通過在塊執行期間獲取給定物件的互斥鎖來實現的。 lock
該語句以關鍵字開頭。
lock,它有乙個物件作為引數,在該引數之後有乙個 ** 塊,一次只能由乙個執行緒執行。 例如:public
classtestthreading
有關 ClassTest 的詳細資訊,請參閱 MSDN。
-
他們中的大多數都是正確的,但你似乎沒有明確的鎖定目的。
計時器似乎與鎖定沒有太大關係。
因為鎖就像一把鑰匙,它需要乙個每個人都可以訪問的唯一屬性,而如何確定標籤屬性是可以的,相反,我可以給你寫乙個有問題的程式。 可以定義乙個全域性整數 cnt,初始值為 0,開啟 n 個執行緒,同時進行標籤的文字屬性的獲取和設定操作,在設定前新增判斷,如果文字不是 x,則賦值 x,讓 cnt++。 最後,從理論上講,CNT 可能是 1,但在實踐中可能不止於此。
單螺紋元件和單元模型。
Visual Basic 建立的所有部件都使用單元模型,無論部件是單執行緒還是多執行緒。 單螺紋元件只有乙個單元,該單元包含元件提供的所有物件。 >>>More