【问题标题】:MPProcessors is deprecated in Mac OS 10.7. What's the alternative?MPProcessors 在 Mac OS 10.7 中已弃用。有什么选择?
【发布时间】:2011-07-22 14:59:38
【问题描述】:

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

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

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

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

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

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

提前致谢,

邓肯·钱普尼 WareTo

【问题讨论】:

  • 所以你知道答案是什么,但你不喜欢它,所以你希望得到不同的答案?
  • 我知道你不想接触 GCD 或 OpenCL 之类的技术,这可能也很适合这个,但我想你会发现你可以节省大量的代码和通过升级到这些技术来提高性能。我强烈建议您观看 Drew McCormack 的 Concurrent Programming on Snow Leopard 系列视频,他使用分形计算作为这些技术强大功能的示例。
  • 从长远来看绝对正确,Caleb/Brad,但如果我已经有一个稳定的代码库,我也不愿意把它撕掉。

标签: multithreading macos osx-lion


【解决方案1】:

在可可中:[NSProcessInfo processInfo].processorCount

在 BSD 语言中:sysctlbyname("hw.ncpu", ...)

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

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多