#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
閱讀更多 while有bugif改完bug 的文章