最近刚开始接触windows程序设计,然后分别在Win10的VS2017运行和Win7的VC6.0
运行同一段代码,但是结果却大不一样?
有人可以解答一下吗,? 在这里谢过了。
运行结果:
Win10 VS2017环境:
win7 VC6.0环境
然后下面是代码:
// 两个优先级不同的线程.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;
}