ASP.NET一般处理文件Handler.ashx属性IsReusable详解 (转)

利用ASP.NET开发网站,比较多使用的是ASPX文件,很少使用ASHX文件,但ASHX在有些方面还是蛮实用的,如图片防盗链、验证码、AJAX读数据等,而且速度也快点,省去了Page类生命周期这些步骤。ASHX有个IsReusable属性,很多人对此有疑惑,以下为你详细解答:

IsResuable属性指示是否可以重用于其他IHttpHandler实例,那么什么时候可以设置为true,什么时候不能呢,如果可以设置为true,性能可以得到大大的提升,但必须保证线程安全。

那么什么叫线程安全呢?

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

线程安全问题都是由全局变量及静态变量引起的。

若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安

原文地址:https://www.cnblogs.com/qingzhibin/p/IsReusable.html