Ste*_*eav 6 c# cpu multithreading
System.Environment.ProcessorCount显示N个处理器(在我的情况下为N = 8),我想要使用它.现在问题是,Windows资源管理器sais,我的4个CPU被"停放",而8个线程我开始只分离到4个未阻塞的CPU.
现在还有办法使用停放的CPU吗?
当Windows"停放"CPU核心时,这意味着该核心没有足够的工作可以将核心置于低功耗状态.为了"取消停放"CPU,您只需要创建足够的工作.
如果您正在启动8个线程并且Windows没有取消停放CPU,则线程可能正在进行I/O,阻塞或完成太快.如果你发布你的线程正在做什么,也许有人可以解释为什么他们没有在停放的核心上运行.
通常,您应该能够这样做:
Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)0x00FF;
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档:
http ://msdn.microsoft.com/en-us/library/system.diagnostics.process.processoraffinity.aspx
但它也说,默认情况下你的进程被分配给所有核心。
另一方面,您可以尝试ProcessThread.ProcessorAffinity并尝试手动设置它(如果您想强制每个线程使用另一个核心)。