十行小程序,有关多线程,高手来看看 我不明白的是这里为什么要引入这个对象,用lock(this)锁定这段代码不行吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只有以同一个对象实例为锁定对象的代码才会同步。若用this,则当方法suspend所在的类被创建了两个实例时,如object mutex=new object();A a1=new A(mutex);A a2=new A(mutex);a1.Suspend();//假设在线程1a2.Suspend();//假设在线程2若lock(this),则两个Suspend()不同步,因为this分别表示a1和a2两个对象,也就无法实现同步!若用lock(mutex),则锁定同一个对象的两个方法会同步。 原因是要等待:System.Threading.Monitor.Wait(mutex);造成多锁这里要求一定是object是因为Monitor的目标必须使object,如果是primary data的话,就无法实现,这是这两种数据的存储机制造成的。你用其他任何中的object都可以。 我后来又看了一些书,觉得这里的有点象同步的一种方式:信号灯(semaphore).大家以为然否?如果是,还请哪位大虾简单解释一下,看书看的迷迷糊糊的 如何计算2个字符串的相似度 我想做一个生日提醒的软件、但不知道怎么做,给我点思路吧 C#中有关com接口的定义 CS0103: 当前上下文中不存在名称“LinkmanManager” C# 改变 其他程序窗口样式 c#2003 如何将DataGrid显示的查询结果写入数据库 透明控件 关于系统自动动作的用例分析 想编一个telnet客户端,不知道大家有没有一些参考可用 求助,当CLASSID=0时,调不出来头部 有谁知道C#做过什么出名的软件或游戏??????? 求助不使用驱动,直接使用并口打印的方法(在线)?
若用this,则当方法suspend所在的类被创建了两个实例时,
如
object mutex=new object();
A a1=new A(mutex);
A a2=new A(mutex);
a1.Suspend();//假设在线程1
a2.Suspend();//假设在线程2若lock(this),则两个Suspend()不同步,因为this分别表示a1和a2两个对象,也就无法实现同步!
若用lock(mutex),则锁定同一个对象的两个方法会同步。