Should I use static fields and interlocked together?
-
13-07-2021 - |
Frage
Should I use static fields and interlocked together, in cases when i need to provide thread safety and atomic operations with static fields, Is static fields are atomic by default? For example:
Interlocked.Increment(ref Factory.DefectivePartsCount);
Thanks.
Lösung
Yes.
The field (assuming Int32) is atomic, not because it's static but because it's 32 bits.
How ever, Factory.DefectivePartsCount += 1
requires a read and a write action on the variable so the whole operation is not thread-safe.
Andere Tipps
static
doesn't guarantee anything in terms of thread-safety. Hence, an increment will still not be atomic even if the variable is static
. As such, you will still need to use classic synchronization mechanisms depending on the situation. In your case Interlocked.Increment
is fine.