Добрый день,
Имеется список, нужно сделать его потокобезопасным, но хочется так чтобы ListWrapper<T>.ForEach(Action...) не блокировала ListWrapper<T>.Add и Remove (потому что Action может занимать относительно много времени).
Есть две идеи как это сделать.
1-ая-простая. сделасть копию всего списка внутри ForEach
2-ая. "накапливать" изменения списка если он заблокирован (выполняется ForEach), то есть при Add добавлять в другой "временный" список, при удалении записывать что нужно удалить. И как только список освободиться вносить изменения.
Наверняка коллекции с таким поведением имеют устоявшееся название, какое?
Где можно посмотреть реализации?
Какие грабли могут быть в таком подходе?