在Mac OS 10.7中不推荐使用MPProcessors。有什么选择?

时间:2011-07-22 14:59:38

标签: multithreading macos osx-lion

我正在开发一个分形渲染应用程序,其代码可以追溯到10.4。它使用NSThreads来管理渲染线程以计算分形。

直到最近,它支持操作系统回到10.4,所以我甚至无法升级它以使用NSOperationQueues。

应用程序FractalWorks现已在Mac App商店中提供,其最低操作系统要求为10.6.6。因此,我们放弃了对旧操作系统的支持,并将返回并重新渲染渲染以使用NSOperationQueues或GCD。

与此同时,我想在新发布的Lion中干净利落地运行它。具体来说,我想摆脱10.7中新弃用的长列表调用。第一次通过将是一个简单的升级。

该应用程序当前使用MPProcessors方法来确定系统上的核心数,因此它可以为每个核心创建一个渲染线程。它工作正常,MPProcessors甚至允许在i5 / i7上进行超线程,并让程序创建两倍的渲染线程和核心。

我需要一个现代调用,让我可以在系统中查询逻辑内核的数量,正如MPProcessors现在所做的那样。文档只是说该方法已被弃用,而没有提供替代方法。有什么选择? (并且不要告诉我GCD / NSOperationQueues。我知道这是要走的路,但这比我现在准备承担的工作要大。)

提前致谢,

Duncan Champney WareTo

1 个答案:

答案 0 :(得分:5)

在可可:[NSProcessInfo processInfo].processorCount

在BSD-ese中:sysctlbyname("hw.ncpu", ...)

使用格式塔:Gestalt(gestaltCountOfCPUs, &count);