c# 线程安全深拷贝

标签 c# locking thread-safety deep-copy

我已经阅读了很多其他问题以及大量谷歌搜索,但我一直无法找到明确的解决方案。

根据我读过的一些最佳实践,类的静态方法应该是线程安全的,实例成员应该将线程安全留给消费者。

我想为类实现一个深拷贝方法。该类本身具有其他引用类型成员。有什么方法可以使深度复制方法线程安全,而不必对类的所有实例化成员施加开销?

最佳答案

关于克隆,stack overflow已经有了很好的答案。

Deep cloning objects

至于线程安全,我认为唯一的保证是在复制过程中对成员变量加锁。

更新:

好的,我已经做了一些研究。我认为确保成员线程安全的最优雅的方法是让调用线程持有对象的锁,而不是尝试在类中实现它。此外,实现 ICloneable 接口(interface),然后您就可以轻松地对整个对象进行二进制复制。请参阅我上面发布的链接中的答案。当然,您仍然可以轻松地为类中的静态成员实现锁。

关于c# 线程安全深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052756/

相关文章:

c++ - 多读/单写类的线程安全

java - 方法级单例实例线程安全吗?

c# - 在 C# 中将 ushort 值转换为两个字节值

c# - 在 asp.net 中访问另一个类中的 1 个类值

c# - 是否可以创建一个测试来显示 C# 中双重检查锁定的失败?

c# - 跨线程操作无效(How to access WinForm elements from another module events?)

c# - 是什么导致 Azure 事件中心 ReceiverDisconnectedException/LeaseLostException?

c# - 如何在 C# 中获得更多封装?

linux - Linux 线程中的文件段/节/记录锁

java - 我如何确保写入发生在同一存储桶和同一键上的不同线程同时读取 concurrenthashmap 之前?