2011-12-03 214 views
4

如果我有一個靜態方法將一個對象轉換爲另一個對象, 是這種方法在C#中線程安全嗎?是靜態方法線程安全的

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

只是想使問題更加清晰....

時調用轉換方法....我們可以假設,目標是不會被修改。 因爲Convert方法只關注目標的「attrubite」

+7

不可能說,* target *有任何屬性或字段可由其他線程寫入嗎?那麼它不是線程安全的。 –

+0

我想你需要了解「線程安全」實際上首先意味着什麼。 – x0n

+2

你的例子不是一個靜態方法。 –

回答

2

不,它不是。

「的方法將是線程安全的,如果將b訪問的數據不會被任何其他線程可以訪問」如果這個定義是正確的,那麼該方法不是線程安全

原因

MyDataClass對我來說似乎是引用類型,所以有可能多個線程可能會更改target變量

+5

我不知道爲什麼你認爲這不是線程安全的。鎖保護什麼? – Gabe

+0

刪除了它是不必要的鎖..我的壞 –