我有一个使用ASP.net (c#)编写的应用程序,其中有一部分代码会修改全局可访问资源(例如web.config文件)。为了避免竞态条件,在修改资源时只允许一个用户进行操作,因此我需要使用监视器来锁定代码:
lock(Global.globallyAccessibleStaticObject)
{
//..修改资源
//..保存资源
}
我对这种锁定方法感到满意,但是我想知道,如果这不够用怎么办?是否应该改用互斥量(mutex)呢?我知道互斥量适用于进程间锁定(跨多个进程和应用程序),因此速度较慢,但考虑到部署的ASP.NET页面的性质(跨多个应用程序域同时处理多个请求),这是否必要呢?
答案似乎取决于服务器端如何处理ASP页面。我已经研究过HTTP管线、应用程序域、线程池等方面,但我仍然不确定是否需要在我的同步中采用进程间锁定,还是仅使用进程内锁定对于Web应用程序就足够了?
注意:我不想陷入具体任务中,因为我希望这个问题保持通用性,因为它在许多(多线程)场景中都可能相关。此外,我知道有更多实现这些任务的方法(异步处理程序/页面、Web服务等),但我现在不关心。
我对这种锁定方法感到满意,但是我想知道,如果这不够用怎么办?是否应该改用互斥量(mutex)呢?我知道互斥量适用于进程间锁定(跨多个进程和应用程序),因此速度较慢,但考虑到部署的ASP.NET页面的性质(跨多个应用程序域同时处理多个请求),这是否必要呢?
答案似乎取决于服务器端如何处理ASP页面。我已经研究过HTTP管线、应用程序域、线程池等方面,但我仍然不确定是否需要在我的同步中采用进程间锁定,还是仅使用进程内锁定对于Web应用程序就足够了?
注意:我不想陷入具体任务中,因为我希望这个问题保持通用性,因为它在许多(多线程)场景中都可能相关。此外,我知道有更多实现这些任务的方法(异步处理程序/页面、Web服务等),但我现在不关心。