问个奇怪的问题,突发奇想,函数调用跟多线程有没有关系?
hwyqy 2015-08-12 09:46:51 我写了个DLL,里面有个类Helper,放了很多函数,仅有函数和函数内的局部变量,没有任何private或public成员变量, 供ASP.Net调用,使用频繁
普通方法
在N多个page页中
使用Helper h=new Helper (),然后h.fun1() ,h.fun2()调用 ,这当然没问题,
在App_Code中,新建一个App类,其中有段代码
public Helper h=new Helper();
然后在所有的页中,就不需要定义变量new一个实例
只要App.Helper.fun1(),App.Helper.fun1(),
也即所有的Asp.net线程共享静态变量 h
所有的线程共享一个静态变量肯定不是好的方法,但方法二,编码方便,而且还可以省去page中不停的new,然后垃圾回收的问题,因为我的Helper类仅是函数体,没有成员变量,不会导致多线程访问的变量冲突
但我想的是,第二种方法会不会引起效率上的问题,方法一中,如果是4核CPU,4个线程可以同时new Helper(),然后同时执行里面的方法,但方法二,4个线程同时访问变量h,会不会需要阻塞其中3个,不能同时调用?应该也能的啊
想不明白了,还请高手指点下