我創建了一個示例程序below.In這個節目,我想到兩件事無鎖多個併發讀者
- 我不得不重寫ToString()方法,該方法應該支持併發讀取。
- 應該是線程安全的
。
using System.Collections.Generic;
using System.Linq;
namespace Second.App
{
class Program
{
static void Main(string[] args)
{
var sampleClass=new SampleClass();
sampleClass.AddString("Apple");
sampleClass.AddString("Orange");
string allStr = sampleClass.ToString();
}
}
public class SampleClass:SecondClass
{
public override void AddString(string text)
{
base.AddString(text);
}
public override string ToString()
{
return base.ToString();
}
}
public class SecondClass
{
private readonly List<string> _collection = new List<string>();
public virtual void AddString(string text)
{
_collection.Add(text);
}
public override string ToString()
{
const string delimiter = ",";
return _collection.Aggregate((i, j) => i + delimiter + j);
}
}
}
希望有好的答案..
爲了得到很好的答案,你需要有一個很好的問題。這裏沒有問題! –
'SampleClass'的目的是什麼?它只是覆蓋,但調用「SecondClass」? – StuartLC
爲什麼「無鎖」?這個要求背後有很多誤解。只需使用常規鎖定或ReaderWriter版本即可。 –