class A
{
List<SomeClass> list;
private void clearList()
{
list = new List<SomeClass>();
}
private void addElement()
{
list.Add(new SomeClass(...));
}
}
当这两个函数并行执行时,是否可能遇到多线程问题(或任何意外行为)?
使用案例是一个错误列表,可以随时清除(通过简单地分配一个新的空列表)。
编辑:我的假设是
- 只有一个线程添加元素
- 遗忘的元素是可以接受的(即在清除和添加新元素之间存在竞争条件),只要清除操作成功即可
- .NET 2.0
Clear
,而是创建了一个新的列表。如果同时调用Clear
和Add
会有问题吗(您说List
不是线程安全的)? - AndiDogforeach(Element e in instanceOfC.list) { ... }
,那么这会引起麻烦吗?如果我在此迭代期间分配一个新的List
,GUI仍将在旧列表上工作,对吗? - AndiDog