title: Why is volatile variable usually private?
body: <p>I have two classes - Class '<code>MyDerived</code>' derives from the abstract base class '<code>MyBase</code>'. Also <code>PrimaryDerivedClass</code> also inherits <code>MyBase</code>.
  I first create the instance of <code>PrimaryDerivedClass</code> which then creates instances of '<code>MyDerived</code>'.</p>
  
  <p><code>MyBase</code> has a Protected method called <code>ProcessThread</code> which is used like <code>ThreadPool.QueueUserWorkItem(ProcessThread)</code> when new instance of the <code>PrimaryDerivedClass</code> and <code>MyDerived</code> is created. Now when i want to stop all the threads in some scenario, I am setting some boolean volatile variable to TRUE and when any other thread find volatile variable's value = <code>TRUE</code>, it stops processing.</p>
  
  <p>When I declared '<code>private volatile bool stopThreads</code>' in <code>MyBase</code>, I didn't get the intended behavior. However, when I made it <code>static</code> or <code>public</code> I could see what I am trying to acheieve.
  What would be wrong in case of private volatile?</p>
  
  <p>Keeping the above requirement aside, I have a question further:
  <strong>Usually, I have seen volatile variable is declared private. Is there any important aspect because of which it's usually declared private?</strong></p>
  
  <p>(I am new to multithreading.)</p>