lock關鍵字是實現線程同步的比較簡單的方式,其實就是設置一個臨界區。在lock之後的{...}區塊爲一個臨界區,當進入臨界區時加互斥鎖,離開臨界區時釋放互斥鎖。MSDN對lock關鍵字的描述是: lock 關鍵字可將語句塊標記爲臨界區,方法是獲取給定對象的互斥鎖,執行語句,然後釋放該鎖。
具體例子如下:
{
string str = name as string;
Random rand = new Random();
int count = rand.Next(100, 200);
for (int i = 0; i < count; i++)
{
lock (NumList)
{
NumList.Add(i);
Console.WriteLine("{0} {1}", str, i);
}
}
}
對lock的使用有幾點建議:對實例鎖定lock(this),對靜態變量鎖定lock(typeof(val))。lock的對象訪問權限最好是private,否則會出現失去訪問控制現象。