gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:53:03 26 4
gpt4 key购买 nike

我认为自己了解线程的概念以及为什么某些代码是“线程安全的”或为什么不是“线程安全的”,但是作为主要使用ASP.NET的人,线程和线程安全是我很少考虑的问题。但是,我似乎在Stack Overflow上遇到了许多评论和答案(不一定是ASP.NET),其效果是“警告-这不是线程安全的! ”,这往往使我再次怀疑我是否编写了实际上可能在应用程序中引起问题的类似代码。 [震惊,恐怖等]所以我不得不问:

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

我的观点:虽然Web应用程序本质上是多线程的,但是每个特定的请求都在单个线程中出现,并且您创建,修改或销毁的所有非静态类型都是该单个线程/请求所独有的。如果请求创建的DAL对象的实例创建了业务对象的实例,并创建了I want to lazy-initialize a collection within this object,则它不是线程安全的也没关系,因为它永远不会被其他线程接触。 ...正确的? (假设我在请求期间没有启动新线程来启动长时间运行的异步过程。我很清楚这会改变一切。)

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

但是,仅此而已,因此ASP.NET中的线程安全主要可以归结为这一点:注意如何设计和使用静态变量。除此之外,您完全不需要担心。

我对这件事有错吗?你不同意吗?开导我!

最佳答案

除了静态项目外,在对应用程序的所有请求之间共享某些对象。例如,在将不是线程安全的项目放入应用程序缓存中时要格外小心。同样,没有什么可以阻止您在处理请求时生成自己的线程进行后台处理。

关于asp.net - ASP.NET开发人员真的需要关心线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com