c# 多线程--Lock

最近在学习多线程编程,以下代码出自《C#2.0完全参考手册》,稍有改动
当使用多个线程是,有时需要协调两个或多个线程的行为,完成这个步骤的过程成为同步(Synchornization)。使用同步机制最常见的原因是,两个或多个线程需要访问同一个共享资源,而该资源每次只能供一个线程使用……
同步的关键是引入锁(Lock)的概念,。锁用于控制对对象中的代码块的访问,当一个线程锁定一个对象时,其他线程就不能访问已锁定的代码块。只有当线程释放该锁时,其他线程才能锁定该对象。
下面的代码由两个线程执行一模一样的代码(共享资源),输出同样的结果
Code
上述是在方法内部Lock,但是如果想同步访问并非自己创建的类定义的方法,但他本身并不是同步的,对于这种由第三方编写而我们无权访问它的源代码的类,就
不能像上面那样处理了。  解决办法是lock语句中指定要锁定的对象。这羊对象之外就不能任意的访问它,程序代码如下,注意Lock的位置

 

Code

注意上述代码的54行,lock对象,看对比效果的话就把上述代码的54行屏蔽,就可以了。

posted @ 2009-08-12 17:24  hsrzyn  阅读(643)  评论(0)    收藏  举报