gpt4 book ai didi

c# - 拥有一个类的多个实例(引用类型)是否使其线程安全?

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:19 25 4
gpt4 key购买 nike

希望您能帮助我澄清我对线程安全和引用类型的多个实例的理解。

我在下面概述了一个简单的场景。我的问题是:如果 ProcessorOne 和 ProcessorTwo 同时运行,并且 DatabaseIntegration 类是引用类型并且 ProcessorOne 和 ProcessorTwo 都有自己的 DataBaseIntegration 实例,那么 ProcessorOne 保存的实体是否有可能具有名称来自 ProcessorTwo 的阻止?

public class ProcessorOne
{
private readonly DatabaseIntegration databaseIntegration;
public ProcessorOne(DatabaseIntegration databaseIntegration)
{
this.databaseIntegration = databaseIntegration;
}

public void Process()
{
this.databaseIntegration.SetName("NameOne")
Entity entity = new Entity()
this.dataBaseIntegration.Save(entity);
}
}

public class ProcessorTwo
{
private readonly DatabaseIntegration dataBaseIntegration;
public ProcessorTwo(DatabaseIntegration dataBaseIntegration)
{
this.dataBaseIntegration = dataBaseIntegration;
}

public void Process()
{
this.databaseIntegration.SetName("NameTwo")
Entity entity = new Entity()
this.dataBaseIntegration.Save(entity);
}
}

public class DatabaseIntegration
{
private string entityName;

public void SetName(string entityName)
{
this.entityName = entityName;
}

public void Save(Entity entity)
{
entity.EntityName = this.entityName;
using (DbContext context = new DbContext(sqlConnection))
{
context.Entity.Add(entity);
context.SaveChanges();
}
}
}

最佳答案

不,它们会有不同的名称,因为正如您所说,在您的代码中,每个类都有不同的 DatabaseIntegration 实例。

因此 ProcessorOne 的 dataBaseIntegration 名称为“NameOne”,而 ProcessorTwo 的 dataBaseIntegration 名称为“NameTwo”。

问候。

关于c# - 拥有一个类的多个实例(引用类型)是否使其线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947689/

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