我有一個ASP.net(c#)應用程序,它有一部分代碼修改全局可訪問的資源(如web.config文件)。當修改資源,自然,爲了防止競爭條件僅允許一個用戶在一個時間,所以我需要使用顯示器來鎖定的代碼:ASP.Net - 監視器/鎖或互斥
鎖(Global.globallyAccessibleStaticObject) { //..modify資源 //..save資源 }
我很滿意這個鎖定的做法,但轉念一想,如果這是什麼還不夠嗎?我應該使用互斥體而不是?我知道互斥對進程間鎖定很有用(跨越許多進程和應用程序),因此速度較慢,但考慮到部署的asp.net頁面的性質(跨多個應用程序域同時發出多個請求),這是否有必要?
似乎答案,將取決於ASP頁是如何在服務器端處理。我已經完成了有關http管道,應用程序域,線程池等的研究,但我仍然對是否有必要懇求爲我的同步進行內部進程鎖定或進程內鎖定是否足以用於Web應用程序而感到困惑?
注意:我不想陷入特定的任務,因爲我希望這個問題保持一般,因爲它可能與許多(多線程)場景有關。此外,我知道有更多方法可以完成這些我現在不在乎的任務(異步處理程序/頁面,Web服務等)。