参考大小结构的原子分配

发布于 2024-11-28 08:45:50 字数 253 浏览 0 评论 0原文

快速提问...假设我有一个包含单个引用成员的 C# 结构。 .NET 中该结构体的赋值是原子的吗?例如:

struct ReadOnlyList<T>
{
    private List<T> list;
    // other random functionality
};

我知道普通的旧引用分配是原子的,只是好奇将整个事情包装在一个结构中是否会产生任何影响......

谢谢

Quick question... Suppose I have a C# struct that contains a single reference member. Are assignments of this struct atomic in .NET? For Example:

struct ReadOnlyList<T>
{
    private List<T> list;
    // other random functionality
};

I know that plain old reference assignments are atomic, just curious if wrapping the whole thing up in a struct makes any difference...

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伪心 2024-12-05 08:45:50

12.5 变量引用的原子性

以下数据类型的读取和写入应是原子的:bool、char、byte、sbyte、short、ushort、uint、int、float 和引用类型。此外,对前面列表中的基础类型的枚举类型的读取和写入也应该是原子的。其他类型(包括 long、ulong、double 和decimal)以及用户定义类型的读取和写入不需要是原子的。除了为此目的而设计的库函数之外,不保证原子读取-修改-写入,例如递增或递减的情况。

因此,具有唯一引用类型成员的结构的赋值原子性是实现定义的,您不应该依赖它。

12.5 Atomicity of variable references

Reads and writes of the following data types shall be atomic: bool, char, byte, sbyte, short, ushort, uint, int, float, and reference types. In addition, reads and writes of enum types with an underlying type in the previous list shall also be atomic. Reads and writes of other types, including long, ulong, double, and decimal, as well as user-defined types, need not be atomic. Aside from the library functions designed for that purpose, there is no guarantee of atomic read-modify-write, such as in the case of increment or decrement.

So atomicity of assignment of a structure with the only reference-type member is implementation defined, and you should not rely on it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文