写个总结:试图用标记来进行同步时荒谬的,C#线程同步就是要用lock,Monitor,Mutex,同步事件和等待句柄...

通过耗费我一天多的时间,才总结出来。

一开始我两个类的不同名方法进行同步,我一开始听信网友的说话,用个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;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值