提问人:Ambareesh 提问时间:10/30/2023 最后编辑:Theodor ZouliasAmbareesh 更新时间:10/30/2023 访问量:48
如果在函数中创建了新的集合实例,它是否是线程安全的?
If a new instance of collection is created inside a function is it thread safe?
问:
我刚刚读到 C# 集合不是线程安全的,如果我每次在函数中创建一个新的集合实例作为局部变量怎么办?它仍然不是线程安全的吗?
public void AddToCollection(int item)
{
List<int> collection = new List<int>();
collection.Add(item);
}
答:
2赞
shingo
10/30/2023
#1
你的问题有些模棱两可。
线程安全是指一个对象或方法是否可以由多个线程同时访问。从这个意义上说,答案是否定的,本地线程仍然是不安全的。List<T>
如果你问,让多个线程同时调用是否安全?答案是肯定的,因为在任何时候,这个列表都只能通过这种方法访问,并且没有多线程,这自然是安全的。AddToCollection
应该再次注意的是,如果在此方法中创建多个访问列表的线程,则此列表仍然是不安全的。例如,这是不安全的:
public void AddToCollection(int item)
{
List<int> collection = new List<int>();
Task.Run(() => collection.Add(item));
Task.Run(() => collection.Add(item));
}
评论
List<T>
SqlConnection