.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( 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,否则会出现失去访问控制现象。

猜你喜欢

转载自blog.csdn.net/jilm168/article/details/1857343