2011-12-03 2 views
4

한 개체를 다른 개체로 변환하는 정적 메서드가있는 경우 은이 메서드는 C#에서 스레드로부터 안전합니까?정적 메서드 스레드가 안전합니까?

public static AnotherDataClass Convert(MyDataClass target) 
{ 
    AnotherDataClass val = new AnotherDataClass(); 
    // read infomration from target 
    // put information into val; 
    return val; 
} 

그냥 .... 문제는 더 명확하게 할

때 변환 메서드 Invoke .... 우리는 그 대상이 변경 될 수 않을 것입니다 가정 할 수있다. Convert 메서드가 대상의 "attrubite"에만 관심이 있으므로

+7

* target *에 다른 스레드가 쓸 수있는 속성이나 필드가 있습니까? 그런 다음 스레드로부터 안전하지 않습니다. –

+0

"스레드 안전성"이 실제로 무엇을 의미하는지 이해해야한다고 생각합니다. – x0n

+2

귀하의 예는 정적 방법이 아닙니다. –

답변

2

아니요, 아닙니다. 이 정의는 본 방법은 안전 쓰레드되지 올바른 경우

"은 다른 스레드가 액세스 할 수없는 것 액세스 데이터 ㄴ한다면 방법은 스레드 안전 것"

이유

MyDataClass이 참조 유형 인 것 같습니다. 다중 스레드가 target 변수를 변경하고있을 가능성이 있습니다.

+5

왜 스레드 안전하다고 생각하는지 모르겠다. 자물쇠가 무엇을 보호합니까? – Gabe

+0

불필요한 자물쇠를 제거했습니다. –

관련 문제