QueryPerformanceCounter にアクセスしてルーチンの実行時間を記録するコードがあります。だいたい:
var
FStart, FStop : Int64 ;
...
QueryPerformanceCounter (FStart) ;
... <code to be measured>
QueryPerformanceCounter (FStop) ;
<calculate FStop - FStart, update minimum and maximum execution times, etc>
このロギング コードの一部はスレッド内にありますが、一方で、派生した結果にアクセスする表示 UI があります。ロギング コードもアクセスしているのと同じ変数に VCL スレッドがアクセスしている可能性があると考えています。VCL はデータを読み取るだけですが (マングルされた読み取りはそれほど深刻ではありません)、ログ コードはデータの読み取りと書き込みを、場合によっては別のスレッドから行います。
QueryPerformanceCounter 自体はスレッドセーフだと思います。
コードは問題なく問題なく実行されていますが、クリティカル セクションで Int64 カウンターへのアクセスをラップする必要があるかどうか疑問に思っています。
また、クリティカル セクション アクセスの速度ペナルティはどのくらいなのだろうか?