А количество считываний/записей совпадает или они куда-то теряются? Эта статистическая картина верна в 100% случаев или иногда интервал между записями оказывается существенно меньше чем между считываниями? Можешь привести пример кода демонстирирующий проблему?
Аааааа!!! Идиото!
Пока копипастил нашёл косяк.
void Read8Thread::run()
{
...
QTime myTimer;
...
cycleflag = 1;
while( cycleflag )
{
//ini = Ini = rdtsc();
myTimer.start();
....
for( j = 0; j < 8; j++)
{
....
emit got_new_I( buildI(IByte[1], IByte[0]), j);
....
if( j == 7)
{
do { // End = rdtsc();
//loopTime = (End - Ini) / CPU_MHz;
}while( myTimer.elapsed() < 79 ); // раньше было loopTime <78930
cerr << myTimer.restart() << " ";
//cerr << loopTime << " ";
//Ini = End;
}
}
}
}
( в коде остались следы использования rdtsc() )
Надо было кусок
//ini = Ini = rdtsc();
myTimer.start();
вынести за начало цикла. Я тупо "съедал" кусок периода, те самые 20 мс.
Погрешность всё равно осталась, но теперь она не нарастает, а колеблется в окрестности среднего +- 5-15 мс, примерно.
Размышляю тут о сущности времени, а сам так скосячил.
Извиняюсь, за ложную тревогу