请教一个关于windows线程优先级的问题?
#include "stdafx.h"
#include "windows.h"
DWORD WINAPI ThreadProc(LPVOID Param)
{
char *p=(char *)Param;
int i=0;
while(i++<10)
printf("%s\n",p);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwThreadID;
HANDLE h[3];
char *ch="ABOVE NORMAL THREAD!";
char *ch1="NORMAL THREAD!";
char *ch2="HIGHEST THREAD";
h[0]=::CreateThread(NULL,0,ThreadProc,ch,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[0],THREAD_PRIORITY_ABOVE_NORMAL);
::ResumeThread(h[0]);
h[1]=::CreateThread(NULL,0,ThreadProc,ch1,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[1],THREAD_PRIORITY_NORMAL);
::ResumeThread(h[1]);
h[2]=::CreateThread(NULL,0,ThreadProc,ch2,CREATE_SUSPENDED,&dwThreadID);
::SetThreadPriority(h[2],THREAD_PRIORITY_HIGHEST);
::ResumeThread(h[2]);
::WaitForMultipleObjects(
3,h,TRUE,INFINITE);
::CloseHandle(h[0]);
::CloseHandle(h[1]);
::CloseHandle(h[2]);
return 0;
}
//////////////
我的是想要程序顺序输出HIGEST THREAD/ABOVE NORMAL THREAD/NORMAL THREAD各十行的.
但是程序执行的结果是乱序的,而且每次执行的结果都不同..
请问是什么原因呢?
如果要顺序应该怎么修改?是否和CPU是不是双核有关.