title: delphi - class static method, static var in multi thread application
body: <p>I relative new with delphi XE2, I want to know about something, if I have like this code</p>
  
  <pre><code>TSomeClass=class
  strict private
  class var
     FCounter:integer;
  public
     class procedure SomeProcedure();static
  end;
  
  implementation
  class procedure SomeProcedure()
  begin
    inc(FCounter);
  end;
  
  initialization
  begin
     FCounter:=0;
  end;
  
  finalization
  begin
    FCounter:=0;
  end;
  </code></pre>
  
  <p>As my understanding, SomeProcedure() will static on memory, and single instance,</p>
  
  <p>my question</p>
  
  <ol>
  <li>if TSomeClass accessed by many thread, TSomeClass thread-safe or not? or it will make overlapping between thread?</li>
  <li>if yes, do I need critical section for each thread? or another approach for that kind of method...</li>
  <li>if two different thread accessed this method, how about FCounter? FCounter will count sequential from last value or different thread with different value start from zero?</li>
  </ol>