我是一个线程新手,我正在尝试用 C# (.NET 3.5 SP1) 编写一个自定义线程安全的通用列表类。我读过为什么线程安全的集合这么难?. 在查看了课程的要求后,我认为我只需要安全地添加到列表并返回列表即可。该示例几乎显示了我想要的所有内容,只是它缺少返回列表方法,因此我编写了自己的公共方法,如下所示:
更新:根据给出的建议,我已经审查了我的要求,因此将课程简化为如下:
public sealed class ThreadSafeList<T>
{
private readonly IList<T> list = new List<T>();
private readonly object lockable = new object();
public void Add(T t)
{
lock (lockable)
{
list.Add(t);
}
}
public IList<T> GetSnapshot()
{
IList<T> result;
lock (lockable)
{
result = new List<T>(list);
}
return result;
}
}