메모장에 빨리 작성 했으므로 오류가 있으면 사과드립니다.참 고 스레드 안전
알파와 베타의 두 클래스가 있습니다. Alpha는 스레드 안전 작업 만 노출합니다. 베타는 다른 스레드에서 이러한 작업에 액세스합니다. 이 스레드는 안전한가요?
알파의 참조를 Beta 스레드에 안전하게 전달하고 있습니까?
예 :
public class Alpha
{
readonly private object key = new object();
private int _notThreadSafe = 0;
public int ThreadSafeProperty
{
set
{
lock(key)
{
_notThreadSafe = value;
}
}
get
{
int temp;
lock(key)
{
temp = _notThreadSafe;
return temp;
}
}
}
public Alpha()
{
Thread ClientThread = new Thread(delegate()
{
new Beta(this);
});
ClientThread.Start();
}
public class Beta
{
public Beta(Alpha ParentClass)
{
if(ParentClass != null)
{
ParentClass.ThreadSafeProperty = 1;
}
}
}
}
A'는 스레드 안전이 될 수 있다는 것을 의미 있어야하는데 '하는 경우 다른 스레드가 안전하게 액세스 할 수 있습니다. 그래서 당신은 다른 스레드에서 쓰레드 안전 코드에 접근 할 때 어떤 일이 일어나는가하는 질문에 답할 수 있을까요? 안전하게 액세스 할 수 있습니다. – DLeh