gpt4 book ai didi

c# - 多个线程访问单个对象但在 C# 中没有数据争用

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

让两个修改该对象内不同数据字段的线程访问单个对象是否可以。 (两个线程之间没有争用,因为它们在同一对象的不同数据字段上运行)。

但是,由于这两个线程将访问同一个对象(尽管修改同一个对象的不同数据字段),是否有可能破坏对象的状态?

是否总是建议确保多个线程对对象的互斥访问?或者如果多个线程在不同的数据字段上操作,是否可以允许多个线程在没有任何同步的情况下访问同一个对象?

例如: class Foo
{
private Dictionary<string,ObjectA> map1;
private Dictionary<string,ObjectB> map2;
}

是否可以让一个线程修改存储在 map1 中的 ObjectA 类型的对象,而另一个线程修改存储在 map2 中的 ObjectB 类型的对象?

最佳答案

以这种方式实现线程安全是一个糟糕的设计选择。它可以工作,但非常脆弱,容易被误用。

这是一个复杂的主题,很难简单地回答,但您应该使用一个既定的访问模式,该模式使用 locking 中的任何一个。 , synchronization , 或线程安全 collectionitem这已经融入到 .Net 框架中。

关于c# - 多个线程访问单个对象但在 C# 中没有数据争用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641283/

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