Недавно мой коллега придумал фрагмент кода и спросил мое мнение относительно безопасности потока кода. Ниже приведен пример, иллюстрирующий тот же сценарий, что и код.Поведение потоков методов объекта класса, объявленного как статический член другого класса
public class classA
{
public int DoWorkA()
{
//some logic
}
}
public class classB
{
public static classA objA = new classA();
}
public class classC
{
int DoWorkC()
{
return classB.objA.DoWorkA();
}
}
Теперь, если ClassB.objA.DoWorkA() вызывается simulatenously в различных случаях различных классов, как ClassC, ClassD и т.д. будет ли какой-либо резьбы или проблемы «перекрытия»? Должна ли objA быть преобразована в член экземпляра?
Достаточно ли, если DoWorkA() работает только с локальными переменными (в рамках DoWorkA()), а не для членов класса, чтобы сделать его потокобезопасным? Должен ли я использовать блокировки? – devanalyst