For C and C++ it is not, see the following links.
volatile vs. volatile
Volatile: Almost Useless for Multi-Threaded Programming
Why is volatile not considered useful in multithreaded C or C++ programming?
atomic Weapons: The C++ Memory Model and Modern Hardware.
C++ and the Perils of Double-Checked Locking