多线程lock问题
本人对多线程不太熟悉,有了解的朋友麻烦解答一下。Google了一下,很多说得不明不白...
代码如下:
C# code
pubic class A
{
public void Helper()
{
B b = new B();
b.Do();
}
}
public class B
{
public void Do
{
lock(new A())
{
星矢.天马流星拳();
}
}
}
class A中的Helper方法会被多线程调用,但我想当星矢在发天马流星拳的时候,其他线程过来请求他发天马流星拳的时候,如果他已经发了,就不用再发。
我现在遇到的问题是每个线程的请求过来都会让星矢发天马流星拳....请问怎么写代码才能达到我的要求。
非常感谢!
------解决方案--------------------
lock(new A()) 没用,每次都作用在一个新实例上。你把 new A() 改为 typeof(A) 或者是一个 static 变量上。