多线程同步问题(小问题)
C# code
   private int i = 0;
   private object SycObject=new object(); 
   private void ThreadTest()
   {
    lock (this)
     {
        i++;
     }
   }
   private void TreadTestII()
   {
      lock (SycObject)
      {
          i++;
      }
  }
  上面的两种方式有什么区别ThreadTest和TreadTestII
最近做事没劲,提个问题,打打气
------解决方案-------------------- 1.lock ThreadTest()
2.lock (object)SycObject
------解决方案-------------------- lock (this)
    {
       i++;
    }  
把this 放到Monitor里..当没有线程Monitor 这个实例的时候 执行代码 否则等待其他线程Exit后再执行代码.
你的两个方法...说实话 ThreadTest() TreadTestII() 开始运行 谁都不会等待..
Monitor里有个this 和SycObject 谁都不影响谁
------解决方案-------------------- 
1 lock(this);把整个对象实例都看作是同步的,作为一个同步对象来用(这个类外面的多线程在访问这个对象时,你在这里必须等待访问完后才能访问
2 lock(syncojbect);类内的多线程间的互斥,如果有一线程正在lock 此同步对象,其它的线程仍然可以访问this的其它状态;
------解决方案-------------------- 和楼主有同样的问题,倾听中。。。。
------解决方案-------------------- 没区别,大家个不相干!
------解决方案-------------------- lock (this)不是一个好东西。建议不用。
------解决方案-------------------- C# code
public class C
{
    public void do_something()
    {
        lock (this)
        {
            ...
        }
    }
}
C c = new C();
lock (c)
{
    new Thread(c.do_something);
    //c.do_something要等到解锁后才执行。
------解决方案--------------------  1 lock(this)是锁定这个类的对象实例,,如果外部多线程要访问这个类的对象就要等待lock(this)执行完。 2,lock(syncojbect);只是锁定类内部的代码段,,多线程仍然可以访问该类的其他对象。。 看了上面各位老大的回答,不知道我的理解是对的么。
------解决方案--------------------  学习` UP
------解决方案--------------------  ding...
------解决方案--------------------  ding...
------解决方案--------------------  探讨  1 lock(this)是锁定这个类的对象实例,,如果外部多线程要访问这个类的对象就要等待lock(this)执行完。 2,lock(syncojbect);只是锁定类内部的代码段,,多线程仍然可以访问该类的其他对象。。 看了上面各位老大的回答,不知道我的理解是对的么。 
------解决方案--------------------  没区别,照我的理解,this或是syncobject只是都起的互斥锁的作用,防止两个线程同时进入一个代码块。
------解决方案--------------------  学习
------解决方案--------------------  lock将语句块标记为临界区,确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 定义 private 对象来锁定, 或 private static对象变量来保护所有实例所共有的数据。 lock关键字其实就是对Monitor类的Enter()和Exit()方法的封装,并通过try...catch...finally语句块确保在lock语句块结束后执行Monitor.Exit()方法,释放互斥锁。 参考
------解决方案--------------------  如果没有特殊需要,尽量使用lock(syncojbect)
------解决方案--------------------  两种没有区别de说 第一种情况,并不影响访问。 锁并没有以任何方式阻止对对象本身的访问
------解决方案-------------------- 探讨  1 lock(this);把整个对象实例都看作是同步的,作为一个同步对象来用(这个类外面的多线程在访问这个对象时,你在这里必须等待访问完后才能访问