.NET - 单个List(Of T)的多线程迭代 - 我需要注意什么?

Bri*_*ter 2 .net vb.net multithreading list data-structures

我正在使用VB.NET.

我想构建一个大的List(Of MyClassOrStructure),它在初始填充后变为静态.

我将有多个线程需要遍历此列表来读取数据(不写入,插入或删除)

我需要留意哪些非常糟糕的事情需要留意?

谢谢.

Jon*_*eet 5

如果你只是在阅读,你很好.每个迭代器都将独立于其他迭代器.

如果你曾经想知道为什么IEnumerable<T>界面不直接拥有MoveNext()Current,而是必须创建一个IEnumerator<T>实例,这就是为什么-列表本身不守"光标"的说法,其中的迭代器,它在IEnumerator<T>.IEnumerator<T>在线程之间共享值几乎肯定是个坏主意 - 但是你不太可能意外地做到这一点.迭代在多个线程上的自然方式是IEnumerator<T>每个线程有一个,这是安全的(只要你不修改列表).