我有通过访问 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 计数器的访问包装在关键部分中?
我还想知道关键部分访问的速度损失是多少?