Я многопоточный нуб, и я пытаюсь написать собственный класс универсального списка, безопасный для потоков, на С# (.NET 3.5 SP1). Я прочитал Почему так сложно работать с потокобезопасными коллекциями?. Изучив требования класса, я думаю, что мне нужно только безопасно добавить в список и вернуть список . В примере показано почти все, что мне нужно, за исключением того, что в нем отсутствует метод return list, поэтому я написал свой собственный общедоступный метод, как показано ниже:
Обновление: на основе предложений я рассмотрел свои требования и, следовательно, упростил класс, как показано ниже:
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;
}
}