Tag: 临界区

如何在C#中使用多个变量来锁定范围

我有一种情况,即只有两个更衣室对象空闲时才应执行代码块。 我希望有类似的东西: lock(a,b) { // this scope is in critical region } 然而,似乎没有那样的东西。 这是否意味着这样做的唯一方法是: lock(a) { lock(b) { // this scope is in critical region } } 这甚至可以按预期工作吗? 虽然代码编译,但我不确定它是否会实现我所期望的。

关于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 { […]