通过耗费我一天多的时间,才总结出来。
一开始我两个类的不同名方法进行同步,我一开始听信网友的说话,用个flag标记字段,用if判断,这样来控制同步。其实是绝对错误的。
浪费了一天多时间啊。其实所有的同步问题,不管是一个类的方法多个线程同步调用,还是两个类的不同名方法进行同步都可以通过lock,Monitor,Mutex,同步事件和等待句柄来解决。
一个非常需要注意的点,是加锁,锁的对象是资源,而不是其他东西,其实原来我不是这么认为。包括c#线程间进行通信,就需要用同步事件和等待句柄。
A{
if(flag1)
{访问资源Q}
}
B{
if(flag2)
{访问资源Q}
}
当时在csdn上问的问题,。现在已经解决了,也透彻了。:有两个方法A和B,一个方法A在定时器线程上,另一个方法在main线程上。 如何使得在不同线程上的两个方法A,B线程不交叉执行?A,B两个方法的功能如下: A{ 访问资源R2; 访问资源R2;} B {访问资源R1; 访问资源R2;}