DWORD WINAPI ThreadIdle(LPVOID lpParam)
{
int i=0;
while(i++<10)
printf("Idle Thread is runing/n");
return 0;
}
DWORD WINAPI ThreadNormal(LPVOID lpParam)
{
int i=0;
while(i++<10)
printf("Normal Thread is Running/n");
return 0;
}
DWORD WINAPI ThreadHighest(LPVOID lpParam)
{
int i=0;
while(i++<10)
printf("Highest Thread is Running/n");
return 0;
}
DWORD dwThreadID;
DWORD WINAPI ThreadRealtime(LPVOID lpParam)
{
int i=0;
while(i++<10)
printf("Realtime Thread is Running/n");
return 0;
}
int main(int argc, char* argv[])
{
HANDLE h[4];
//Create a thread that priority is Idle
h[0]=::CreateThread(NULL,0,ThreadIdle,NULL,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[0],THREAD_PRIORITY_IDLE);
::ResumeThread(h[0]);
//create a thread with priority Normal
h[1]=::CreateThread(NULL,0,ThreadNormal,NULL,0,&dwThreadID);
//create a thread whit priority of Highest
h[2]=::CreateThread(NULL,0,ThreadHighest,NULL,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[2],THREAD_PRIORITY_HIGHEST);
::ResumeThread(h[2]);
//realtime
h[3]=::CreateThread(NULL,0,ThreadRealtime,NULL,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[3],THREAD_PRIORITY_TIME_CRITICAL);
::ResumeThread(h[3]);
//等待线程内核对象都变成受信状态
::WaitForMultipleObjects(4,h,TRUE,INFINITE);
for(int i=0;i<4;i++)
::CloseHandle(h[i]);
//::CloseHandle(h[1]);
return 0;
}