日期:2014-05-18  浏览次数:20768 次

多线程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 变量上。