C# Lock 鎖機制


#region 鎖機制

/*

* 鎖的機制

* private void Do()

{

threat t1=new threat(doSomething);

threat t2=new threat(doSomething);

t1.Start();

t2.Start();

}

object locker=new object();

private void doSomething()

{

lock(locker)

{

FunLog() ;

}

當t1執行到lock時,檢測發現locker不在鎖定列表中,它會記錄locker的內存地址,加入到鎖定列表,並開始執行lock的鎖定代碼段;

t2再執行到lock時,檢測發現locker的內存地址是在鎖定列表中的,於是線程等待;t1執行完FunLog到達lock結尾,將locker地址從鎖定列表刪除;

t2檢測發現locer已不在鎖定列表中,它會記錄locker的內存地址,加入到鎖定列表,並進入執行lock的代碼段。

*/

#endregion


分享到:


相關文章: