У меня пока не было проблем с использованием одной и той же блокировки для нескольких методов, но мне интересно, действительно ли в следующем коде могут возникнуть проблемы (производительность?), о которой я не знаю:
private static readonly object lockObj = new object();
public int GetValue1(int index)
{
lock(lockObj)
{
// Collection 1 read and/or write
}
}
public int GetValue2(int index)
{
lock(lockObj)
{
// Collection 2 read and/or write
}
}
public int GetValue3(int index)
{
lock(lockObj)
{
// Collection 3 read and/or write
}
}
3 метода и коллекции никак не связаны.
Кроме того, Будет ли проблема, если этот lockObj
также будет использоваться синглтоном (в свойстве Instance)?
Изменить: чтобы прояснить мой вопрос об использовании того же объекта блокировки в классе Singleton:
private static readonly object SyncObject = new object();
public static MySingleton Instance
{
get
{
lock (SyncObject)
{
if (_instance == null)
{
_instance = new MySingleton();
}
}
return _instance;
}
}
public int MyMethod()
{
lock (SyncObject)
{
// Read or write
}
}
Будет это вызывает проблемы?