multithreading - MPProcessors 在 Mac OS 10.7 中被弃用。还有什么选择?

标签 multithreading macos osx-lion

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

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

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

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

该应用目前使用 MPProcessors 方法来确定系统上的核心数,因此它可以为每个核心创建一个渲染线程。它运行良好,MPProcessors 甚至允许在 i5/i7 上使用超线程,并让程序创建的渲染线程数量是内核数量的两倍。

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

提前致谢

邓肯钱普尼 淘宝

最佳答案

在 Cocoa 中:[NSProcessInfo processInfo].processorCount

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

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

关于multithreading - MPProcessors 在 Mac OS 10.7 中被弃用。还有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791906/

相关文章:

Lua中的多线程

c -/dev/shm 在 Mac OS X 上的位置

Android使用buildozer编译报错

mysql - database.yml 中的用户名和密码正确,但密码不被接受

Java线程内部

java - 如何 "' 像 CAS 一样以原子方式验证和惰性交换?

ios - MKNetworkKit 和 AFNetworking 有什么区别?

jquery - 为什么 OS X 上的 FF 在单击事件处理程序中丢失了 jQuery-UI?

cocoa - NSWindowController 窗口?

Python:每n秒轮询一次SQL数据库并根据它执行任务