相关疑难解决方法(0)

关于C#中的lock语句的困惑

这来自MSDN:lock关键字确保一个线程不进入代码的关键部分,而另一个线程处于临界区.

难道一个关键部分必须是相同的关键部分

或者它的意思是:lock关键字确保一个线程不会进入代码对象保护的任何关键部分,而另一个线程处于由同一对象保护的任何关键部分.?

    class Program
{
    static void Main(string[] args)
    {
        TestDifferentCriticalSections();

        Console.ReadLine();
    }

    private static void TestDifferentCriticalSections()
    {
        Test lo = new Test();

        Thread t1 = new Thread(() =>
        {
            lo.MethodA();
        });
        t1.Start();

        Thread t2 = new Thread(() =>
        {
            lo.MethodB();
        });
        t2.Start();
    }
}

public class Test
{
    private object obj = new object();

    public Test()
    { }

    public void MethodA()
    {
        lock (obj) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking block critical-section

20
推荐指数
2
解决办法
9119
查看次数

标签 统计

block ×1

c# ×1

critical-section ×1

locking ×1

multithreading ×1