这不是矫枉过正,而且只有其中之一是必要的吗?我在此处和此处搜索并找到了有关 C# 中的互斥和锁定的不同帖子。
示例:
在我们的应用程序中,我们有一个分离多个重新连接线程的函数,在这个线程中我们使用 aMutex
和 a lock
。不会lock
阻止对这部分代码的访问并防止connect
被任何其他线程更新吗?
bool connect = false;
Mutex reconnectMutex = new Mutex(false, "Reconnect_" + key);
try
{
lock(site)
{
if(site.ContainsKey(key))
{
siteInfo = (SiteInfo)site[key];
if(reconnectMutex.WaitOne(100, true))
{
connect = true;
}
}
}
if (connect)
{
// Process thread logic
}
}
catch
{}
reconnectMutex.ReleaseMutex();
更多信息:
这是在 ASP.NET WebService 中,不在 Web Garden 中运行。