</pre>}<img src="https://img-blog.csdn.net/20130922201741421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWFIxMDY0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><pre name="code" class="cpp">
兩次運行的結果不同,與書上說的有矛盾。書上說只要有優先級高的就不會運行優先級低的,但是運行後結果卻不一樣,求高手指教。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
DWORD WINAPI ThreadIdle(LPVOID lpParam)
{
int i = 0;
while (i++<10)
{
printf("Idle Thread is running\n");
}
return 0;
}
DWORD WINAPI ThreadNormal(LPVOID lpParam)
{
int i = 0;
while(i++<10)
printf("Normal Thread is running\n");
return 0;
}
int main(int argc, char* argv[])
{
DWORD dwThreadID;
HANDLE h[2];
h[0] = ::CreateThread(NULL,0,ThreadIdle,NULL,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[0],THREAD_PRIORITY_IDLE);
::ResumeThread(h[0]);
h[1]=::CreateThread(NULL,0,ThreadNormal,NULL,0,&dwThreadID);
::WaitForMultipleObjects(2,h,TRUE,INFINITE);
::CloseHandle(h[0]);
::CloseHandle(h[1]);
return 0;
}