SetThreadPriority

#include <stdio.h>
#include <windows.h>



DWORD WINAPI ThreadProc(LPVOID lpParameter);


int main( void )
{


	HANDLE Thread=CreateThread(NULL,NULL,ThreadProc,NULL,CREATE_SUSPENDED ,NULL);
	//设置线程优先级
	SetThreadPriority(Thread,THREAD_PRIORITY_TIME_CRITICAL);
	ResumeThread(Thread);
	SuspendThread(Thread);
	ResumeThread(Thread);
	//获取线程优先级
	switch (GetThreadPriority(Thread))
	{
	case THREAD_PRIORITY_TIME_CRITICAL:
		{
			printf("THREAD_PRIORITY_TIME_CRITICAL\n");
		}
		break;
	case THREAD_PRIORITY_HIGHEST:
		{
			printf("THREAD_PRIORITY_HIGHEST\n");
		}
		break;
	case THREAD_PRIORITY_ABOVE_NORMAL:
		{
			printf("THREAD_PRIORITY_ABOVE_NORMAL\n");
		}
		break;
	case THREAD_PRIORITY_NORMAL:
		{
			printf("THREAD_PRIORITY_NORMAL\n");
		}
		break;
	case THREAD_PRIORITY_BELOW_NORMAL:
		{
			printf("THREAD_PRIORITY_BELOW_NORMAL\n");
		}
		break;
	case THREAD_PRIORITY_LOWEST:
		{
			printf("THREAD_PRIORITY_LOWEST\n");
		}
		break;
	case THREAD_PRIORITY_IDLE:
		{
			printf("THREAD_PRIORITY_IDLE\n");
		}
		break;
	default:
		printf("default\n");
	}


	getchar();
	CloseHandle(Thread);

	return 0;
}

DWORD WINAPI ThreadProc( LPVOID lpParameter )
{

	printf("哈哈\n");
	getchar();
	return true;
}

/*

idle (最低)THREAD_PRIORITY_IDLE                 如果进程优先级为realtime则调整为16,其它情况为1 

LOWEST 低    THREAD_PRIORITY_LOWEST               -2(在原有基础上-2) 


BELOW 低于标准 THREAD_PRIORITY_BELOW_NORMAL       -1(在原有基础上-1) 


NORMAL(标准) THREAD_PRIORITY_NORMAL             不变(取进程优先级值) 


ABOVE 高于标准  THREAD_PRIORITY_ABOVE_NORMAL      +1(在原有基础上+1) 


HIGHEST (高) THREAD_PRIORITY_HIGHEST            +2(在原有基础上+2) 


CRITICAL(最高) THREAD_PRIORITY_TIME_CRITICAL     如果进程优先级为realtime则调整为31,其它情况为15 


*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include <windows.h> #include <iostream> using namespace std; const int N = 5; // 进程数 int count = 0; // 计数器 HANDLE mutex = CreateMutex(NULL, FALSE, NULL); // 互斥量 HANDLE barrier = CreateEvent(NULL, TRUE, FALSE, NULL); // 屏障 DWORD WINAPI Process(LPVOID lpParam) { int id = *((int*)lpParam); cout << "Process " << id << " arrived at barrier." << endl; WaitForSingleObject(mutex, INFINITE); count++; ReleaseMutex(mutex); if (count == N) { cout << "All processes arrived at barrier, releasing barrier." << endl; SetEvent(barrier); } WaitForSingleObject(barrier, INFINITE); cout << "Process " << id << " starts the next phase of work." << endl; return 0; } DWORD WINAPI Broadcast(LPVOID lpParam) { WaitForSingleObject(mutex, INFINITE); cout << "Broadcast process started." << endl; ReleaseMutex(mutex); SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST); WaitForSingleObject(barrier, INFINITE); cout << "Broadcast process releasing all processes." << endl; ReleaseMutex(mutex); for (int i = 0; i < N; i++) { ReleaseSemaphore((HANDLE)lpParam, 1, NULL); } return 0; } int main() { HANDLE threads[N]; DWORD threadIds[N]; HANDLE sem = CreateSemaphore(NULL, 0, N, NULL); int ids[N]; for (int i = 0; i < N; i++) { ids[i] = i; threads[i] = CreateThread(NULL, 0, Process, &ids[i], 0, &threadIds[i]); if (threads[i] == NULL) { return 1; } } HANDLE broadcastThread = CreateThread(NULL, 0, Broadcast, sem, 0, NULL); if (broadcastThread == NULL) { return 1; } WaitForMultipleObjects(N, threads, TRUE, INFINITE); WaitForSingleObject(mutex, INFINITE); cout << "All processes completed." << endl; ReleaseMutex(mutex); return 0; }
06-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值