簡體   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