只是一个快速的问题。假设我有一个应用程序进行一些繁重的计算。是否可以在一个核心上运行 UI 代码,然后在另一个核心上进行所有计算?如果是,你如何做到这一点?
谢谢
编辑:
澄清一下,我不是指在不同的线程上运行,而是在另一个核心上运行。计算应该为自己获得一个完整的核心。
只是一个快速的问题。假设我有一个应用程序进行一些繁重的计算。是否可以在一个核心上运行 UI 代码,然后在另一个核心上进行所有计算?如果是,你如何做到这一点?
谢谢
编辑:
澄清一下,我不是指在不同的线程上运行,而是在另一个核心上运行。计算应该为自己获得一个完整的核心。
只需使用 Grand Central Dispatch。所有 UI 更新都进入主队列,所有繁重的后台处理都进入后台队列。通常的代码模式如下所示:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self doHeavyCalculation];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
将任务分配给特定的核心是应该留给系统的事情,您在多任务操作系统上运行,并且您的应用程序不知道很多事情。如果(大部分)只有您的应用程序正在运行并且您在后台队列中调度某些内容,则后台任务将拥有自己的核心。
简单的答案:是的,UI 始终在主线程上运行,您可以在主线程或后台线程上进行的任何计算,这个答案可能很有用。