gpt4 book ai didi

c# - 有什么方法可以在不重写的情况下使这个 c# 类线程安全?

转载 作者:太空狗 更新时间:2023-10-29 21:23:21 26 4
gpt4 key购买 nike

我喜欢在 C# 中创建类的快速方法,我们可以轻松创建成员而无需实现获取和设置代码,但(据我所知)它们不是线程安全的!

public class SocksEntry
{
public int Int1 { get; set; }
public int Int2 { get; set; }
}

C# 是否提供了一种无需执行此操作即可添加线程安全的快速简便方法?

public class SocksEntry
{
protected object _lock = new object();

// internal
private int _int1 = 0;
private int _int2 = 0;

// accessors
protected int Int1
{
get { lock (_lock) return _int1; }
set { lock (_lock) _int1 = value; }
}

protected int Int2
{
get { lock (_lock) return _int2; }
set { lock (_lock) _int2 = value; }
}
}

与非线程安全版本相比,它显然使整个类变得更大并且创建起来很痛苦!

最佳答案

使类线程安全比您想象的要难得多。在 getter 和 setter 周围加锁可能还不够。所以最好的做法是让这个类不是线程安全的,并把责任留给这个类的消费者,如果他需要线程安全的话,同步对它的访问。如果消费者不需要线程安全,那就太好了,您不会仅仅因为在类中构建了线程安全而不需要它而影响应用程序的性能。为什么您认为 .NET 中 99.99% 的类都不是线程安全的?

关于c# - 有什么方法可以在不重写的情况下使这个 c# 类线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042445/

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