繁体   English   中英

C#相当于Java的synchronized(abc.class)

[英]C# equivalent of Java's synchronized (abc.class)

我想知道是否存在以下Java代码的C#等价物:

synchronized (abc.class) {
   // code here
}

如果没有等价物,那我怎样才能在C#中模拟它?

  • abc是我在该计划中的一个课程。
  • abc属性和方法(其中一些是静态的)是许多线程同时访问的。

不要阻止班级! 这可能会导致代码中出现很大问题。 相反,使用lock构造从代码中访问静态资源:

class Abc
{
    private static object _resource;
    static Abc()
    {
        _resource = new object();
    }

    public static void Method1()
    {
        lock (_resource)
        {
            // this will run for only one thread at a time
        }
    }

    public static void Method2()
    {
        lock (_resource)
        {
            // this will run for only one thread at a time
        }
    }
}

此外,如果一个线程只需要读取资源而不写入资源,则可以使用ReadWriteLockSlim )进行同步。

要锁定整个类,请使用以下命令:

lock (typeof(abc))
{
   // code here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM