In other words, can I do something with a volatile variable that could not also be solved with a normal variable and the Interlocked class?
This is a fairly complex topic. I find Joseph Albahari's writeup to be one of the more definitive and accurate sources for multithreading concepts in the .NET Framework that might help answer your question.
But, to quickly summarizes there is a lot of overlap between the volatile
keyword and the Interlocked
class as far as how they can be used. And of course both go way above and beyond what you can do with a normal variable.