15,471
社区成员
发帖
与我相关
我的任务
分享
// 两个优先级不同的线程.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
DWORD WINAPI ThreadIdle(LPVOID lpParam); //设置空闲线程
DWORD WINAPI ThreadNormal(LPVOID lpParam); //设置正常线程
int main()
{
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;
}
DWORD WINAPI ThreadIdle(LPVOID lpParam) //设置空闲线程
{
for (size_t i = 0; i < 10; i++)
{
printf("Idle Thread id runing! is:%5d\n", i);
}
return 0;
}
DWORD WINAPI ThreadNormal(LPVOID lpParam) //设置正常线程
{
for (size_t i = 0; i < 10; i++)
{
printf("Norma Thread id runing! is:%5d\n", i);
}
return 0;
}
char prompt[80];
DWORD WINAPI ThreadIdle(LPVOID lpParam) //设置空闲线程
{
for (int i = 0; i < 10; i++)
{
sprintf(prompt,"Idle Thread %5d is running!\n",i);
OutputDebugString(prompt);
//not: printf("Idle Thread %5d is running!\n",i);
}
return 0;
}
DWORD WINAPI ThreadNormal(LPVOID lpParam) //设置正常线程
{
for (int i = 0; i < 10; i++)
{
sprintf(prompt,"Normal Thread %5d is running!\n",i);
OutputDebugString(prompt);
//not: printf("Normal Thread %5d is running!\n",i);
}
return 0;
结果:
Idle Thread 0 is running!
Idle Thread 1 is running!
Idle Thread 2 is running!
Idle Thread 3 is running!
Idle Thread 4 is running!
Idle Thread 5 is running!
Idle Thread 6 is running!
Idle Thread 7 is running!
Idle Thread 8 is running!
Idle Thread 9 is running!
The thread 0x19D8 has exited with code 0 (0x0).
Normal Thread 0 is running!
Normal Thread 1 is running!
Normal Thread 2 is running!
Normal Thread 3 is running!
Normal Thread 4 is running!
Normal Thread 5 is running!
Normal Thread 6 is running!
Normal Thread 7 is running!
Normal Thread 8 is running!
Normal Thread 9 is running!
The thread 0x1B20 has exited with code 0 (0x0).