我是C#中多線程的新手。但是閱讀C#書籍和教程中的各章。我知道開發用於多線程應用程序的類的最佳方法是創建不可變類。C# - 多線程 - 如何應用於具有讀/寫屬性的對象
但我不太確定如何處理暴露讀/寫屬性的類。在我讀過的一些文章中,作者已經在讀/寫屬性周圍放置了鎖,例如
public class Test
{
private string property1;
public string ClassProperty
{
get
{
lock
{
return Property1;
}
}
set
{
lock
{
Property1 = value;
}
}
}
}
我知道,任何共享變量聲明和使用在一個類內,它需要鎖定在多線程應用程序。但是我讀過的一些文章建議,如果被暴露的屬性是引用類型,上面的代碼將不起作用。其他人建議你不能使用暴露的屬性線程安全的類?有沒有人有關於這個話題的明確答案?
謝謝
我推薦你閱讀這個免費的電子書:[Albahari](http://www.albahari.com/threading/) –
你從哪裏得到這樣的想法,即不可變類是最好的方法?我想在一個有狀態的多線程應用程序中,不可變類可能是一場噩夢! –