NET多線程同步方法詳解(二):互斥鎖(lock)

 lock關鍵字是實現線程同步的比較簡單的方式,其實就是設置一個臨界區。在lock之後的{...}區塊爲一個臨界區,當進入臨界區時加互斥鎖,離開臨界區時釋放互斥鎖。MSDN對lock關鍵字的描述是: lock 關鍵字可將語句塊標記爲臨界區,方法是獲取給定對象的互斥鎖,執行語句,然後釋放該鎖。 
具體例子如下:

        static public void ThreadFunc(object name)
        {
            
string str = name as string;
            Random rand 
= new Random();
            
int count = rand.Next(100200);
            
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,否則會出現失去訪問控制現象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章