簡単な質問です。重い計算を行うアプリケーションがあるとします。1 つのコアで UI コードを実行してから、他のコアですべての計算を行うことは可能ですか? はいの場合、どのようにこれを行いますか?
ありがとう
編集:
明確にするために、異なるスレッドで実行するという意味ではなく、別のコアで実行するという意味です。計算は、それ自体のコア全体を取得する必要があります。
簡単な質問です。重い計算を行うアプリケーションがあるとします。1 つのコアで UI コードを実行してから、他のコアですべての計算を行うことは可能ですか? はいの場合、どのようにこれを行いますか?
ありがとう
編集:
明確にするために、異なるスレッドで実行するという意味ではなく、別のコアで実行するという意味です。計算は、それ自体のコア全体を取得する必要があります。
グランドセントラルディスパッチをご利用ください。すべての UI 更新はメイン キューに送られ、負荷の高いバックグラウンド処理はすべてバックグラウンド キューに送られます。通常のコード パターンは次のようになります。
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self doHeavyCalculation];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
特定のコアへのタスクの割り当ては、システムに任せるべきものです。マルチタスク OS で実行していて、アプリが知らないことがたくさんあります。(ほとんどの場合) 実行中のアプリだけがあり、バックグラウンド キューに何かをディスパッチすると、バックグラウンド タスクは独自のコアを取得します。
簡単な答え: はい、UI は常にメイン スレッドで実行されています。メイン スレッドまたはバックグラウンド スレッドで実行できる計算は、この回答が役立つ場合があります。