У меня есть код, который регистрирует время выполнения подпрограмм путем доступа к QueryPerformanceCounter. Грубо говоря:
var
FStart, FStop : Int64 ;
...
QueryPerformanceCounter (FStart) ;
... <code to be measured>
QueryPerformanceCounter (FStop) ;
<calculate FStop - FStart, update minimum and maximum execution times, etc>
Часть этого кода регистрации находится внутри потоков, но, с другой стороны, есть интерфейс отображения, который обращается к полученным результатам. Я полагаю, что существует вероятность того, что поток VCL получит доступ к тем же переменным, что и код регистрации. VCL будет только когда-либо читать данные (и искаженное чтение не будет слишком серьезным), но код регистрации будет читать и записывать данные, иногда из другого потока.
Я предполагаю, что сам QueryPerformanceCounter является поточно-ориентированным.
Код успешно работает без каких-либо признаков проблемы, но мне интересно, нужно ли мне обернуть свои обращения к счетчикам Int64 в критической секции?
Мне также интересно, какова потеря скорости доступа к критическому разделу?