1

只是一个快速的问题。假设我有一个应用程序进行一些繁重的计算。是否可以在一个核心上运行 UI 代码,然后在另一个核心上进行所有计算?如果是,你如何做到这一点?

谢谢

编辑:

澄清一下,我不是指在不同的线程上运行,而是在另一个核心上运行。计算应该为自己获得一个完整的核心。

4

2 回答 2

3

只需使用 Grand Central Dispatch。所有 UI 更新都进入主队列,所有繁重的后台处理都进入后台队列。通常的代码模式如下所示:

dispatch_async(dispatch_get_global_queue(0, 0), ^{
    [self doHeavyCalculation];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self updateUI];
    });
});

将任务分配给特定的核心是应该留给系统的事情,您在多任务操作系统上运行,并且您的应用程序不知道很多事情。如果(大部分)只有您的应用程序正在运行并且您在后台队列中调度某些内容,则后台任务将拥有自己的核心。

于 2013-03-18T08:19:11.357 回答
1

简单的答案:是的,UI 始终在主线程上运行,您可以在主线程或后台线程上进行的任何计算,这个答案可能很有用。

于 2013-03-18T08:19:19.800 回答