gpt4 book ai didi

c# - 这个静态方法是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 13:30:20 24 4
gpt4 key购买 nike

我有以下类(class):

public static class MetadataManager
{
// assume that it is thread safe
public static List<Field> FieldRegistry { get; set; }
}

public class Field
{
public int ID { get; set; }
public string Name { get; set; }
}



public static class FieldDataValidationManager
{
public static bool Validate(int fieldID)
{
return MetadataManager.FieldRegistry.FirstOrDefault(f => f.ID == fieldID).ID > 1;
}

public static bool Validate(Field field)
{
return fieldID.ID > 1;
}
}

现在,User1和User2同时调用静态方法,是否存在并发问题?

FieldDataValidationManager.Validate(111) 

或者User1 正在执行FieldDataValidationManager.Validate(field1) 并且 User2 正在执行 FieldDataValidationManager.Validate(field2)

最佳答案

是的,您的代码是线程安全的,因为您的代码只是从列表中读取。静态与否根本不重要。

如果在 List<T> 上有写操作,您可能会遇到并发问题。那么你应该使用 ConcurrentBag<T>或其他线程安全的集合类型。

关于c# - 这个静态方法是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280237/

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