Kunoichi Asked:2020-10-23 18:17:47 +0000 UTC2020-10-23 18:17:47 +0000 UTC 2020-10-23 18:17:47 +0000 UTC C#。将一个线程/处理器核心加载到满 772 有必要编写以 100%加载一个处理器线程的代码。代码必须在有限时间内执行,具体取决于硬件的能力。例如,如果一个较弱的处理器需要 10 秒,如果一个更强大的处理器需要 5 秒。我尝试在一个周期内对数字进行拆分和乘法,但处理器并不关心,它只使用一小部分核心资源来执行此任务. 什么任务可以100%加载处理器的一个核心/线程? c# 1 个回答 Voted Best Answer Pavel Mayorov 2020-10-23T18:31:49Z2020-10-23T18:31:49Z 一个无限循环足以完全加载一个内核,甚至不需要内部计算。但是操作系统仍然会在内核之间传输线程。为了防止这种情况,您可以使用 SetThreadAffinityMask WinAPI 函数: [DllImport("kernel32.dll")] static extern UIntPtr SetThreadAffinityMask(IntPtr hThread, UIntPtr dwThreadAffinityMask); [DllImport("kernel32.dll")] static extern IntPtr GetCurrentThread(); void Foo() { SetThreadAffinityMask(GetCurrentThread(), (UIntPtr)1); while(true) { } }
一个无限循环足以完全加载一个内核,甚至不需要内部计算。但是操作系统仍然会在内核之间传输线程。为了防止这种情况,您可以使用 SetThreadAffinityMask WinAPI 函数: