1

簡単な質問です。重い計算を行うアプリケーションがあるとします。1 つのコアで UI コードを実行してから、他のコアですべての計算を行うことは可能ですか? はいの場合、どのようにこれを行いますか?

ありがとう

編集:

明確にするために、異なるスレッドで実行するという意味ではなく、別のコアで実行するという意味です。計算は、それ自体のコア全体を取得する必要があります。

4

2 に答える 2

3

グランドセントラルディスパッチをご利用ください。すべての UI 更新はメイン キューに送られ、負荷の高いバックグラウンド処理はすべてバックグラウンド キューに送られます。通常のコード パターンは次のようになります。

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

特定のコアへのタスクの割り当ては、システムに任せるべきものです。マルチタスク OS で実行していて、アプリが知らないことがたくさんあります。(ほとんどの場合) 実行中のアプリだけがあり、バックグラウンド キューに何かをディスパッチすると、バックグラウンド タスクは独自のコアを取得します。

于 2013-03-18T08:19:11.357 に答える
1

簡単な答え: はい、UI は常にメイン スレッドで実行されています。メイン スレッドまたはバックグラウンド スレッドで実行できる計算は、この回答が役立つ場合があります。

于 2013-03-18T08:19:19.800 に答える