c# - c#中的方法锁

标签 c# .net multithreading thread-safety

我有一节课使用这三种方法。这个类被许多线程使用。 如果 Method2 和/或 Method3 在任何线程中运行,我希望 Method1 等待。 有什么建议吗?

public class Class1
{
    public static void Method1() 
    {
        Object lockThis = new Object();

        lock (lockThis)
        {
            //Body function
        }
    }

    public static void Method2() 
    {
         //Body function
    }

    public static void Method3() 
    {
         //Body function
    }
}

最佳答案

如果我没理解错的话,你需要这样的东西:

static object lockMethod2 = new object();
static object lockMethod3 = new object();

public static void Method1() 
{
    lock (lockMethod2)
    lock (lockMethod3)
    {
        //Body function
    }
}

public static void Method2() 
{
    lock (lockMethod2)
    {
        //Body function
    }
}

public static void Method3() 
{
    lock (lockMethod3)
    {
        //Body function
    }
}

这允许方法 3 在方法 2 正在运行时执行,反之亦然,而方法 1 必须等待两者。当然,method2 和 3 不会在 1 运行时运行。

关于c# - c#中的方法锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977106/

相关文章:

c# - Visual Studio 断点下方的蓝点是什么意思?

c# - C# .NET 中的显式字符串是否对框架更有效?

c# - 如何比较枚举值和整数值?

windows - C/C++ : duplicate main() loop in many threads

Java PrintStream 重定向行为异常

c# - C#/Visual Studio 的 JDT 等效项

c# - 字符串部分比较

c# - 用C#在两个进程之间进行通信的最简单方法是什么?

c# - 如何使用 C# 执行 MySQL 表的校验和?

C#:使任务同时运行