2012-04-13 80 views
1

我是一名业余程序员,请耐心等待。 我即将为游戏编写一个游戏插件(适用于Windows操作系统),它可以在游戏中在后台运行。由于插件会产生执行CPU密集型的线程,并且游戏在不同CPU核心上的执行可能会有很大差异,因此该插件只能在具有低于某个限制的负载的多个核心的PC上执行。 我想出了如何监控每个内核的CPU负载,但我仍然有一个问题: 插件是否应该将线程分配给负载最低的内核,或者我可以让系统为我处理? 第一种解决方案对游戏性能会更好吗?每个CPU内核的线程分配(仅限Windows)

+0

_Pretty please_ **不要尝试处理CPU核心负载,内存负载,线程负载**等** **,但留给操作系统,**甚至** - 这是种重要的 - **如果你能想出你看似更好的解决方案**。我要求你采取这样的行动的原因如下:_Imagine如果有多个程序这样做!_想象他们**不断地根据系统的负载改变他们的行为,并且他们最终* *使用大量CPU时间**来适应不断变化的系统负载。你明白为什么你不应该这样做? – mg30rg 2015-05-29 13:41:41

回答

0

如果您在Visual Studio 2010中开发Windows代码,那么我建议您查看可用的并发运行时。 Concurrency Runtime in Visual C++ 2010

如若插件手柄螺纹与 最低负载分配给内核或者我可以让系统处理一下吗?

如果您可以设计系统,您可以让系统为您处理该问题。此外,您的代码不需要根据内核数量进行更改,因为运行时会捕获这些细节,并且生成的线程数量与内核数量成正比。

+0

(s)他不在“can”上,但**应该**将这种资源管理留给底层系统,原因如下:想象一下,如果有多个程序这样做!想象一下,他们会根据系统的负载不断改变他们的行为,并且他们最终会使用大量的CPU时间来适应不断变化的系统负载。你明白为什么你不应该这样做? – mg30rg 2015-05-29 14:36:44