Interlocked operations
are a high-performance way of updating DWORD-sized
or pointer-sized values in an atomic manner.
Note, however, that this doesn't mean that you can avoid
the critical section.
For example, suppose you have a critical section that protects
a variable, and in some other part of the code, you want to
update the variable ...