代码之家  ›  专栏  ›  技术社区  ›  Tim Coker

如何同步对同一方法的多线程调用

  •  0
  • Tim Coker  · 技术社区  · 15 年前

    我不能只用 lock(obj) 哪里 obj 是实例成员,但只声明 目标 在课堂上是静态的?所以对该方法的所有调用都将锁定在同一个对象上?下面是一个简单的例子:

    class Foo
    {
        static object locker = new object();
    
        public void Method()
        {
            lock(locker)
            {
                //do work
            }
        }
    }
    

    编辑:编辑 //do work

    3 回复  |  直到 15 年前
        1
  •  1
  •   Bob    15 年前

    您的示例当然可以工作,但是必须有一些资源在类的不同实例之间共享,这样才有必要。

        2
  •  8
  •   Hans Passant    15 年前

    你为什么需要

        3
  •  1
  •   Henk Holterman    15 年前

    你遗漏了最重要的部分:什么 参与 // do work

    //工作 使用静态数据,然后您就有了正确的解决方案。

    //工作 lock() {} locker (1个实例,多个线程)。