List <t>构造函数线程安全吗?</t>

时间:2010-02-28 22:27:30

标签: c# list thread-safety

更具体地说,如果用于初始化列表的IEnumerable在构造新列表期间被修改,那么List(T)(IEnumerable(T))线程安全吗?

2 个答案:

答案 0 :(得分:6)

这与作为线程安全的List构造函数无关,它只取决于IEnumerable是否是线程安全的。

构造函数不是线程安全的,但在这种情况下这不是问题。构造函数没有做任何损害它的线程安全性的事情,IEnumerable的线程安全可能是一个问题。

答案 1 :(得分:1)

这不是由正在构建的列表决定,而是取决于正在迭代的特定IEnumerable<T>线程安全吗?如果它不支持并发迭代和编辑,那么期望一个异常(或更糟:不可预测的结果)。大多数.NET迭代器不会喜欢这个; 4.0引入了更多的并发集合,或者你可以编写自己的集合。

如果列表是createD成功(迭代源),那么一旦构造了原点没有影响 - 两者都是断开的。