gpt4 book ai didi

c# - 在 ToList() 期间另一个线程可以修改集合吗

转载 作者:行者123 更新时间:2023-11-30 19:39:03 26 4
gpt4 key购买 nike

<分区>

class Sample
{
private List<int> _list;
public List<int> List
{
get
{
return _list.Select(p => p + p).Where(q => q % 2 == 0).ToList();
}
}

public void Add(int n)
{
_list.Add(n);
}

public void Remove(int n)
{
_list.Remove(n);
}
}

我在多线程环境中遇到与上述类似的情况,其中 AddRemoveList 被多个线程同时访问。

在某些情况下 Collection 被修改;在 List getter 中抛出枚举操作可能不执行,这很有意义,因为线程可以在执行 Select/Where 操作时添加/删除。

在调用 ToList() 期间,列表能否被另一个线程修改?意思是,将 getter 更改为

return _list.ToList().Select(p => p + p).Where(q => q % 2 == 0);

足够了,还是我需要对 _list 的访问进行锁定

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com