volatile keyword informs the compiler that a variable will be used by multiple threads. Variables that are declared as
volatile will not be cached by the compiler to ensure the most up-to-date value is held.
mutable keyword can be used for class member variables. Mutable variables are allowed to change from within const member functions of the class.