Windows Api学习笔记-设置线程的优先级

2022-05-09 11:41:55 浏览数 (1)

代码语言:javascript复制
#include <windows.h>
#include <iostream>
using namespace std;

DWORD WINAPI ThreadIdle(LPVOID lpParam)
{
	int i=0;
	while(i  <10)
	{
		cout<<"Idel thread is running"<<endl;
	}
	return 0;
}

DWORD WINAPI ThreadNormal(LPVOID lpParam)
{
	int i=0;
	while(i  <10)
	{
		cout<<"Normal thread is running"<<endl;
	}
	return 0;
}

int main()
{
	DWORD dwThreadId;
	HANDLE h[2];
	h[0] = ::CreateThread(
		NULL,//线程的安全性
		0,//指定线程堆栈大小
		ThreadIdle,//线程函数
		NULL,//线程函数的参数
		CREATE_SUSPENDED,//指定创建线程后是否立即启动,不立即启动
		&dwThreadId//内核给新生成的线程分配的线程ID
		);
	::SetThreadPriority(h[0],THREAD_PRIORITY_IDLE);//把线程的属性设置为空闲,
	::ResumeThread(h[0]);//恢复线程运行
	h[1] = ::CreateThread(
		NULL,
		0,
		ThreadNormal,
		NULL,
		0,
		&dwThreadId
		);//创建的线程默认优先级为Normal
	::WaitForMultipleObjects(
		2,//要等待内核对象的数量
		h,//句柄数组
		TRUE,//是否要等待所有内核对象都成为受信状态
		INFINITE//无限期等待下去
		);
	::CloseHandle(h[0]);
	::CloseHandle(h[1]);
	char a;
	cin >> a;

}

0 人点赞