Грузчик Asked:2020-08-23 02:12:57 +0000 UTC2020-08-23 02:12:57 +0000 UTC 2020-08-23 02:12:57 +0000 UTC C# 6 如何判断一个操作是否是原子操作? 772 通常需要摆脱不必要的线程同步。在这方面,问题出现了——哪些操作是原子的,哪些不是?如何将程序中的所有操作分为2组? c# 1 个回答 Voted Best Answer user177221 2020-08-23T03:16:53Z2020-08-23T03:16:53Z C#规范: 5.5 变量引用的原子性 以下数据类型的读写是原子的:bool、char、byte、sbyte、short、ushort、uint、int、float 和引用类型。此外,在前面列表中具有底层类型的枚举类型的读取和写入也是原子的。 其他类型的读取和写入,包括 long、ulong、double 和 decimal,以及用户定义的类型,不保证是原子的。除了为此目的而设计的库函数之外,无法保证原子读-修改-写,例如在递增或递减的情况下。 那些。对 bool、char、byte、sbyte、short、ushort、uint、int、float、引用类型的原子写入和读取 + 基于这些枚举类型。 其他一切都是非原子的,除非特定方法的 msdn 另有说明。 实际上,标准 CLR 类的原子方法仅包括Interlocked类的方法——通过它您可以实现原子递增/递减/值交换。
C#规范:
那些。对 bool、char、byte、sbyte、short、ushort、uint、int、float、引用类型的原子写入和读取 + 基于这些枚举类型。
其他一切都是非原子的,除非特定方法的 msdn 另有说明。
实际上,标准 CLR 类的原子方法仅包括Interlocked类的方法——通过它您可以实现原子递增/递减/值交换。