私は自分のアプリの起動を高速化しようとしています。そのために持っていたアイデアの1つは、非同期ディスパッチキューを使用することでした。私は2つのタスクを起動時に(実際には非常に大きなタスク)お互いの隣に実行することができますがあります。しかし、どちらもメインスレッド(主にUIコード)上で実行される重要な部分を持っています。メインスレッドで複数のGCDディスパッチ
dispatch_async(dispatch_get_main_queue, ^{
[self doTask1];
});
dispatch_async(dispatch_get_main_queue, ^{
[self doTask2];
//Will task 2 take turns with task 1, or will task 2 start after 1 is finished?
});
私の質問はこれです:私はこの例のように、ブート時に2 dispatch_async年代呼び出した場合、彼らは実行にターンを取る、または完全な最初のブロックは最初、その後、第二ブロックを実行しますか?
シリアルキューの場合、なぜ非同期ディスパッチを呼び出すことができますか? –
私はあなたの質問を理解していない、なぜあなたはできないだろうか? asyncはただブロックをエンキューすることを意味しますが、必ずしも結果を必要としないか、エンキューした現在の操作をブロックする必要がありません。それは別のスレッドで発生するか、すぐに開始する必要はありません。 –
「非同期」と「同時」は同義語であるという誤解があるようです。私はそれがどこから来たのか分からないが、私はそれがスタックオーバーフロー全体を見る。 –