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)
if my understanding is wrong or you have any other options, please feel free to add here.
thanks in advance,