是否可以在不丢失索引的情况下释放数组或列表?

时间:2013-11-09 03:20:05

标签: c# multithreading data-structures thread-safety

我有一个列表,我在其中阅读并存储大量文本。此列表不断添加更多字符串。一段时间后,此列表可能会花费几GB的RAM。

同时我有一个线程从第一个索引开始读取列表或数组,然后处理它。

for(i=0;;i++)
{
     string a = array[i]
     Process(a)
}

我想知道是否有可能在不丢失计数或索引的情况下清除前1000个字符串。这样,上面的循环仍然可以在不丢失索引的情况下工作,但同时释放内存。是否可以只删除数组的一部分?

1 个答案:

答案 0 :(得分:1)

这里理想的方法是不使用数组,而是使用'iterator',你可以预先收集,收集项目,而不是一次收集所有数组项,然后处理它们。 See here as a good starting reference。这种方法的另一个好处是,通过使用Parallel.ForEach

,它可以让您更好地使代码成为多线程