ASP.NET开发人员真的需要关心线程安全吗?

我认为我自己知道线程的概念,为什么某些代码是或不是“线程安全的”,但是作为主要使用ASP.NET的人,线程和线程安全是我很少想到的.然而,我似乎在Stack Overflow上遇到了许多意见和答案(不一定是ASP.NET),以达到“警告 – 这不是线程安全!”的效果,这往往使我第二次猜测我是否写过类似的代码实际上可能会导致我的应用程序的问题. [震惊,恐怖等]所以我不得不问:

ASP.NET开发人员真的需要关心线程安全吗?

我的采取:虽然Web应用程序本质上是多线程的,但每个特定的请求都是在单个线程上,而您创建,修改或销毁的所有非静态类型都是该线程/请求的独占.如果请求创建了一个创建业务对象和I want to lazy-initialize a collection within this object实例的DAL对象的实例,如果它不是线程安全的,因为它永远不会被另一个线程所触及. …对? (我们假设我不是在请求期间启动一个新的线程来启动一个长时间运行的异步进程,我很清楚,改变一切.)

当然,静态类,方法和变量恰恰相反.它们由每个请求共享,并且开发人员必须非常小心,不要在一个用户执行时具有“不安全”代码,可能会对所有其他用户产生意想不到的影响.

但是这是关于它,因此ASP.NET中的线程安全性主要归结为:谨慎地设计和使用静态.除此之外,你根本不需要担心.

我错了这个吗?你不同意吗开导我!

解决方法

除了在应用程序的所有请求之间共享的静态项目之外,还有一些对象.例如,将应用程序缓存中的项目放在不是线程安全的情况下要小心.此外,没有任何东西阻止您在处理请求时产生您自己的线程进行后台处理.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...