Windows 7处理器询问

时间:2018-10-10 21:46:17

标签: c windows winapi x86 windows-7

我有一台拥有24核的PC。我有一个应用程序,该应用程序需要将线程专用于这些核心之一,而将进程本身专用于其中一些核心。现在已经对亲和力和优先级进行了硬编码,我想以编程方式确定我的应用程序应将其亲和力设置为哪一组内核。

我已经读过远离核心0的信息,目前我正在使用第一个CPU上的最后8个核心来处理进程,而将第12个核心用于我要运行的线程。以下是示例代码,该代码可能无法100%准确地显示参数。

let  columnsDisplayed = _.remove(columns, function(n) {
  return arrayOfColumnsNeeded.includes(n.dataIndex);
});

我知道,在优先级较高的情况下(即使在基本优先级为31的情况下)也无法将内核专用于应用程序(如果我在此处出错,请更正我,因为这正是我想要做的非程序解决方案如果可以的话会很好)。话虽这么说,操作系统本身“大部分”运行在一个或几个核心上。它是在启动时随机确定的吗?我可以询问可用的内核以编程方式确定我的进程和SetProirityClass(getCurrentProcess(),REAL_TIME_PRIORITY_CLASS); SetProcessAffinityMask(getCurrentProcess(),0xFF0); CreatThread(myThread, 0, entryPoint, NUll, 0, 0);//all 0 params besides handle and entry SetThreadPriorityClass(myThread, TIME_CRITICAL); SetThreadAffinityMask(myThread, 0x1 << 11); 线程应该在哪一组内核上运行吗?

有什么方法可以防止内核线程窃取我的TIME_CRITICAL线程的时间片吗?

我了解Windows不是实时的,但我正在尽我所能。该解决方案需要适用于win 7,但是如果XP中也支持该解决方案,那就太好了。

0 个答案:

没有答案