Я создаю веб-сайт ASP.net, который обрабатывает тысячи запросов, и все это происходит от одного основного объекта, который они все разделяют, чтобы прочитать его. Я пытаюсь обернуть голову вокруг этих разных типов замков.
Некоторые общие вопросы, которые у меня есть к каждому.
- Какова область действия каждой блокировки Приложение, Сессия, Объект
- Когда правильно использовать один над другим?
- Может ли несколько пользователей одновременно запускать код в блокировке?
- Хит производительности?
1
public class MyClass
{
lock
{
// DO COOL CODE STUFF.
}
}
2
public class MyClass
{
Application.Lock
// DO COOL CODE STUFF.
Application.Unlock
}
3.
public static object lockObject = new object();
public class MyClass
{
lock(lockObject)
{
// DO COOL CODE STUFF.
}
}
4
private static readonly ReaderWriterLockSlim slimLock = new ReaderWriterLockSlim();
public class MyClass
{
slimLock.EnterWriteLock();
// DO COOL CODE STUFF HERE.
slimLock.ExitWriteLock();
}