#include <windows.h>
#include <stdio.h>DWORD WINAPI ThreadIdle(LPVOID);
DWORD WINAPI ThreadAboveNormal(LPVOID);void main()
{
DWORD dwThreadId;
HANDLE hThread[2]; hThread[0]=::CreateThread(NULL,0,
ThreadIdle,NULL,CREATE_SUSPENDED,&dwThreadId);
::SetThreadPriority(hThread[0],THREAD_PRIORITY_LOWEST);
hThread[1]=::CreateThread(NULL,0,
ThreadAboveNormal,NULL,CREATE_SUSPENDED,&dwThreadId);
::SetThreadPriority(hThread[1],THREAD_PRIORITY_ABOVE_NORMAL);
::ResumeThread(hThread[0]);
::ResumeThread(hThread[1]); WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
::CloseHandle(hThread[0]);
::CloseHandle(hThread[1]);
}
DWORD WINAPI ThreadIdle(LPVOID lpPramater)
{
int i=10;
while(--i>0)
printf("Idle Thread Run \n");
return 0;
}
DWORD WINAPI ThreadAboveNormal(LPVOID lpPramater)
{
int i=10;
while(--i>0)
printf("AboveNormal Thread Run \n");
return 0;
}
这个程序为什么还会出现Idle Thread Run,表示不理解,望指教。
#include <stdio.h>DWORD WINAPI ThreadIdle(LPVOID);
DWORD WINAPI ThreadAboveNormal(LPVOID);void main()
{
DWORD dwThreadId;
HANDLE hThread[2]; hThread[0]=::CreateThread(NULL,0,
ThreadIdle,NULL,CREATE_SUSPENDED,&dwThreadId);
::SetThreadPriority(hThread[0],THREAD_PRIORITY_LOWEST);
hThread[1]=::CreateThread(NULL,0,
ThreadAboveNormal,NULL,CREATE_SUSPENDED,&dwThreadId);
::SetThreadPriority(hThread[1],THREAD_PRIORITY_ABOVE_NORMAL);
::ResumeThread(hThread[0]);
::ResumeThread(hThread[1]); WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
::CloseHandle(hThread[0]);
::CloseHandle(hThread[1]);
}
DWORD WINAPI ThreadIdle(LPVOID lpPramater)
{
int i=10;
while(--i>0)
printf("Idle Thread Run \n");
return 0;
}
DWORD WINAPI ThreadAboveNormal(LPVOID lpPramater)
{
int i=10;
while(--i>0)
printf("AboveNormal Thread Run \n");
return 0;
}
这个程序为什么还会出现Idle Thread Run,表示不理解,望指教。
1:不止一个cpu
2:ResumeThread(hThread[1]);之前ThreadIdle就开始执行
3:printf中间有等待行为