(1) 线程间数据共享,需要把共享的数据设置为静态类型,可以使用关键字static。
(2) lock数据同步数据访问,lock关键字将语句表为临界区,如果没有lock,线程对共享变量的操作将变得不可控制
(3)Monitor类同步数据访问数 用于锁定对象,一个线程只有得到这把锁才能对该对象进行操作。一个时刻只有一个线程可以访问对象。
监视器 必须和一个具体的对象相关联。它是静态类,所以不能用它来定义对象,且它所有的方法都是静态的,不能使用对象引用。
MethodSUBA() {
do{ lock(lockExample) { 在线程A中操作共享变量i }
}whille(1==1); } MethodSUBA() {
do{ lock(lockExample) { 在线程B中操作共享变量i }
}whille(1==1); }
//声明创建加锁对象 public static object lockExample=new object(); //声明共享变量 static int i=0;
Main()
{ Thread ThreadSubA =new Thread(new ThreadStart(MethodSubA));
Thread ThreadSubB =new Thread(new ThreadStart(MethodSubA)); ThreadSubA .Start(); ThreadSubB .Start();
do
{
if(console.Read()==‘e’)
}
ThreadSubA .Abort();
ThreadSubB .Abort();
break;
}while(1==1)