如何将进程/线程优先级提高到 15(高)以上

问题描述 投票:0回答:1

我有一个 8 个物理内核(16 个具有超线程)Intel 处理器,我试图通过增加我的 C++ 应用程序进程的优先级和我在这个应用程序中启动的四个线程的优先级来充分利用其中的四个内核(我正在使用 OpenMp 来处理线程)。根据微软优先级表

进程优先级 线程优先级 基本优先级
HIGH_PRIORITY_CLASS THREAD_PRIORITY_IDLE 1
THREAD_PRIORITY_LOWEST 11
THREAD_PRIORITY_BELOW_NORMAL 12
THREAD_PRIORITY_NORMAL 13
THREAD_PRIORITY_ABOVE_NORMAL 14
THREAD_PRIORITY_HIGHEST 15
THREAD_PRIORITY_TIME_CRITICAL 15
REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE 16
THREAD_PRIORITY_LOWEST 22
THREAD_PRIORITY_BELOW_NORMAL 23
THREAD_PRIORITY_NORMAL 24
THREAD_PRIORITY_ABOVE_NORMAL 25
THREAD_PRIORITY_HIGHEST 26
THREAD_PRIORITY_TIME_CRITICAL 31

当我执行以下操作时,我只看到优先级设置为 15.

int priority;
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
priority = GetThreadPriority(GetCurrentThread());

另外,从任务管理器查看优先级,设置为高不是实时的。

关于如何将它增加到 15 以上的任何提示?

c++ multithreading real-time thread-priority
1个回答
1
投票

对于默认的 Windows 安装,您需要具有管理员权限才能将进程的优先级提高到

REALTIME_PRIORITY_CLASS
.

你需要拥有的特权称为

SE_INC_BASE_PRIORITY_NAME

内容/价值 说明
SE_INC_BASE_PRIORITY_NAME
TEXT(“SeIncreaseBasePriorityPrivilege”)
需要增加进程的基本优先级。
用户权限:增加调度优先级。

默认情况下,此权限仅授予管理员组成员,
但您可以使用 Increase scheduling priority 组策略来授予普通用户此权限。

© www.soinside.com 2019 - 2024. All rights reserved.