DotNext by Roman Sakno

<PackageReference Include="DotNext" Version="1.2.6" />

 AtomicEnum

public static class AtomicEnum
Provides basic atomic operations for arbitrary enum type.
public static E VolatileRead<E>(this ref E value) where E : struct, Enum

Reads the value of the specified field. On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

public static void VolatileWrite<E>(this ref E value, E newValue) where E : struct, Enum

Writes the specified value to the specified field. On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.