所以我必须与所有使用,以防止奇怪的事情发生了锁定的几个方法的类当有人使用我的多线程类的访问它的一个实例:多线程和锁定(线程安全的操作)
public class SomeRandomClass
{
private object locker = new object();
public void MethodA()
{
lock (locker)
{
// Does something
MethodB();
}
}
public void MethodB()
{
lock (locker)
{
// Does something else
}
}
}
正如我们所见,MethodB()
自动被MethodA()
访问,但由于MethodA()
当前锁定了更衣柜对象,所以这不起作用。
我要让MethodB()
公开访问,这样你就可以手动调用它需要的时候,但我不希望它同时MethodA()
正在做的事情来使用(这就是为什么我使用的是更衣室的对象)。
当然,我不想MethodA()
做事情,而MethodB()
正在做的东西。我基本上只想要同时使用所有方法中的一种,但MethodA()
需要以某种方式访问MethodB()
而不删除锁(以便它始终保持完全线程安全)。
我真的很希望我想问什么是可以理解的......如果对我的问题有任何疑问,请继续并在下面发布。答案/解决方案也非常感谢!
该解决方案可能非常容易,我只是没有看到它。
顺便说一句,上面应该是C#代码。
我删除了java标记。 –
所以:欢迎来到StackOverflow!我认为你的问题写得非常清楚,出色。我们不喜欢“谢谢你”的短语(他们只是分散注意力),所以我从你的问题中删除了一个。 –
为什么b lock locker会因为所描述的困境而玩弄? – Drew