Есть ли способ узнать фактическое время, потраченное потоком внутри процессора, используя MFC / Win32? Под фактическим временем я имею в виду, что не хочу считать время, потраченное потоком в состояниях, отличных от «Выполнение». Я пробовал метод GetThreadTimes () в Win32 SDK, но не смог получить правильные значения. Я хочу сделать это, потому что я хочу проверить влияние установки ThreadPriority на его планирование, то есть какая разница, если я установлю приоритет потока в THREAD_PRIORITY_BELOW_NORMAL вместо THREAD_PRIORITY_NORMAL?
Вот фактический код:
#include<iostream>
#include <afxwin.h>
#include <afxmt.h>
#include <time.h>
bool bStop = false;
long k1 = 0;
long k2 = 0;
UINT run1(LPVOID param)
{
while(!bStop)
{
for(int i = 0; i < 10; ++i)
{
++k1;
}
}
return 0;
}
UINT run2(LPVOID param)
{
while(!bStop)
{
for(int i = 0; i < 10; ++i)
{
++k2;
}
}
return 0;
}
void main(int argc,char *argv[])
{
CWinThread* pThread1 = AfxBeginThread(&run1, NULL, THREAD_PRIORITY_NORMAL);
CWinThread* pThread2 = AfxBeginThread(&run2, NULL, THREAD_PRIORITY_BELOW_NORMAL );
Sleep(3 * 1000);
bStop = TRUE;
FILETIME f1,f2,f3,f4;
GetThreadTimes(*pThread1, &f1,&f2,&f3,&f4);
CTime t1(f4);
std::cout<<"K1="<<k1<<"\n";
std::cout<<"K2="<<k2<<"\n";
std::cout<<"Thread1 Time="<<t1.GetSecond()<<"sec\n";
std::cout<<"Exit\n";
}