Hello everyone,
Through myself study and previous discussion here, I share the conclusion here that,
if some object is synchronized (mutex, critical section, etc.), there is no need to add volatile keyword.
Here is the reference,
(refer to section volatile, Critical Sections, and Race Conditions)
http://www.ddj.com/cpp/184403766
if my understanding is wrong or you have any other options, please feel free to add here.
thanks in advance,
George