多线程lock有关问题
多线程lock问题本人对多线程不太熟悉,有了解的朋友麻烦解答一下。Google了一下,很多说得不明不白...代码如
多线程lock问题
本人对多线程不太熟悉,有了解的朋友麻烦解答一下。Google了一下,很多说得不明不白...
代码如下:
C# codepubic 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 变量上。