日期:2014-05-19  浏览次数:20954 次

类的静态方法的并发访问--如何处理的呢?
一个类,它有N各对象,如果并发访问他的类的静态方法,
应该有一个先后顺序的,是由谁来控制的呢?
操作系统???还是??

谢谢,

------解决方案--------------------
按照你的描述,如果你的代码中有很多线程,而每个线程都调用你的静态类方法,你这时候才有你所说的并发的问题。
如果是这样的话,那么我告诉你我的理解。现成执行的先后顺序是系统来控制的,这时候会牵涉到互斥的问题。你需要预防死锁,也就是多个线程在调用你的代码时,发生互斥。
在C#里面,有lock这个关键词,是专门用来解决这问题的。当你的线程进入lock代码区时,系统会自动锁住相关资源,其它调用这只有等这个lock解了锁(也就是代码段执行完毕),才能进入这个代码区。
不知道我的理解是不是正确,也不知道我是不是把我的理解说明白了。有什么问题,你可以给我发邮件,共同探讨一下这个问题。
limg@wanwei.com.cn
------解决方案--------------------
可以用MethodImpt特性来实现只一个线程访问此方法,其它线程需等待此线程运行完成后才能访问
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.Synchronized)]
public static ThreadProc()
{
....
}