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

Dun*_*ney 3 macos multithreading 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

Jon*_*pan 5

在可可: [NSProcessInfo processInfo].processorCount

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

使用Gestalt: Gestalt(gestaltCountOfCPUs, &count);