做静态锁在不同的少儿班的工作? [英] Do static locks work across different children classes?

查看:129
本文介绍了做静态锁在不同的少儿班的工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有

abstract class Parent
{
    static object staticLock = new object();

    public void Method1()
    {
        lock(staticLock)
        {
            Method2();
        }
    }

    protected abstract Method2();
}

class Child1 : Parent
{
    protected override Method2()
    {
          // Do something ...
    }
}

class Child2 : Parent
{
    protected override Method2()
    {
          // Do something else ...
    }
}

威尔呼吁新Child1()。方法1()新CHILD2()。方法1()使用同一把锁?

推荐答案

是的。派生类不从基类获取静态数据的的副本。

Yes. A derived class does not get a new copy of the static data from the base class.

然而,这是不符合的通用的类的情况。如果你说:

However, this is not the case with generic classes. If you say:

class Base<T>
{
    protected static object sync = new object();
    ...
}

class Derived1 : Base<int> { ... }
class Derived2 : Base<int> { ... }
class Derived3 : Base<string> { ... }
class Derived4 : Base<string> { ... }
class Derived5 : Base<object> { ... }
class Derived6 : Base<object> { ... }

Derived1和Derived2的的

实例具有相同的同步对象。 Derived3和Derived4的实例具有相同的同步对象。 Derived5和Derived6的实例具有相同的同步对象。但三个同步对象是所有不同的对象。

instances of Derived1 and Derived2 have the same sync object. Instances of Derived3 and Derived4 have the same sync object. Instances of Derived5 and Derived6 have the same sync object. But the three sync objects are all different objects.

这篇关于做静态锁在不同的少儿班的工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆