MFC/Win32를 사용하여 CPU 내부의 스레드가 소비 한 실제 시간을 확인할 수있는 방법이 있습니까? 실제 시간으로 말하자면 쓰레드가 "Running"이 아닌 다른 주에서 보낸 시간을 계산하고 싶지는 않습니다. Win32 SDK에서 GetThreadTimes() 메서드를 시도했지만 적절한 값을 얻을 수 없습니다. 스레드 우선 순위를 THREAD_PRIORITY_NELMAL 대신 THREAD_PRIORITY_BELOW_NORMAL로 설정하면 ThreadPriority를 예약 할 때의 효과, 즉 차이점이 얼마나되는지 확인하고자하므로이 작업을 수행하고 싶습니다.다중 스레드 환경에서 각 스레드 프로파일 링
#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";
}
GetThreadTimes()는이 작업을 수행하는 방법이며, 호출하는 방법과 올바른 값을 가져 오지 않음을 나타내는 경우 도움이됩니다. – Michael
스레드의 루프에는 무엇이 있습니까? 이는보고 된 실행 시간에 영향을 줄 수 있습니다. 또한 시간 변환 코드는 어떻게 생겼습니까? –