0

执行值类型数组的 MemberwiseClone 时:

 var arr = new double[100];

如果使用其他线程上的互锁写入来修改这些双精度数,MemberwiseCloned 副本是否有任何损坏双精度数的风险?我不关心稍微陈旧的值,只是撕裂以及 interlocked 和 memberwiseclone 之间的交互(我猜这会转化为内存 blit 类型的操作?)

4

1 回答 1

1

是的。在 32 位操作系统上,这甚至可以保证有撕裂的风险。在 64 位上,它是实现定义的。我不会轻易冒险,因为即使您测试它不会发生,那么您的测试也只能在您的特定 .NET 版本和特定硬件上进行。你无法确定。

在 64 位上,您可以通过实现自己的克隆版本(可能不会慢很多)可靠地防止撕裂。

于 2012-06-12T14:42:25.983 回答