Volatile is one of the most misunderstood component in C history. Let’s separate out the myths and the facts first and then we will discuss the how’s and why’s of it.
True..I try to avoid volatiles as much as I can. And as someone else pointed out on the blog in the commens, many implementations even get the volatiles wrong giving rise to a lot of bugs, so even if you were utmost careful about it, it can still cause issues.