gpt4 book ai didi

ASP.Net——监视器/锁定或互斥体

转载 作者:行者123 更新时间:2023-12-02 17:01:52 28 4
gpt4 key购买 nike

我有一个 ASP.net (c#) 应用程序,其中包含修改全局可访问资源(如 web.config 文件)的部分代码。当然,在修改资源时,为了防止竞争条件,一次只允许一个用户,因此我需要使用监视器锁定代码:

锁(Global.globallyAccessibleStaticObject){ //..修改资源 //..保存资源}

我对这种锁定方法很满意,但后来我想,如果这还不够怎么办?我应该使用互斥体来代替吗?我知道互斥体对于进程间锁定(跨多个进程和应用程序)很有用,因此速度较慢,但​​考虑到已部署的 ASP.NET 页面的性质(跨多个应用程序域一次多个请求),这是否有必要?

答案似乎取决于服务器端如何处理 asp 页面。我已经做了关于http管道、应用程序域、线程池等的研究,但我仍然很困惑是否有必要为我的同步请求进程间锁定,或者进程内锁定对于网络应用程序来说是否足够???

注意:我不想陷入特定任务中,因为我希望这个问题保持一般性,因为它在许多(多线程)场景中都相关。此外,我知道还有更多方法可以完成我现在不关心的这些任务(异步处理程序/页面、Web 服务等)。

最佳答案

如果您的应用程序仅在一个 AppPool 中运行,那么它就在一个物理 w3wp.exe 进程中运行,因此监视器/锁应该足以保护共享资源。使用该策略,您只需要跨同一进程中运行的线程进行保护。

关于ASP.Net——监视器/锁定或互斥体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795903/

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