코드에서 정적 요소 (잠금을 사용하여)를 설정하거나 가져 오는 코드의 여러 세그먼트에 대한 질문이 있습니다.스레드 안전 C#
그래서이 코드가 맞습니까? 그리고 한 순간에 MethodB와 MethodC를 호출하면 어떻게됩니까? 사실, 그들은 한 순간에 하나의 정적 메서드를 호출합니다 (다른 lock() 세그먼트에서). 안전합니까?
public class ThreadsClass
{
public static class StaticHelper
{
public static string NameStatic { get; set; }
public static void MethodCountStatic(int num)
{
for (int i = 0; i <= num; i++)
{
Console.WriteLine("{0} step...",i);
}
}
}
private Object lockObject = new Object();
public void MethodA()
{
lock (lockObject)
{
StaticHelper.NameStatic = "somename";
}
}
public void MethodB()
{
lock (lockObject)
{
StaticHelper.MethodCountStatic(1000000);
}
}
public void MethodC()
{
lock (lockObject)
{
StaticHelper.MethodCountStatic(500000000);
}
}
}
무엇을 수정합니까? 판타지 코드이며 환상적인 시나리오에서 작동합니다. 그리고 다른 곳에서는 실패 할 것입니다. –