5

私の理解では// 001、優先度の高い同時キューを取得します

// 001
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

これ// 002により、新しいカスタム シリアル キューが作成されます

// 002
dispatch_queue_t queue = dispatch_queue_create("bgQueue", NULL);

私の質問は、他のプロセス (iPhone、他のアプリなど) がグローバル キューでキューに入れられる可能性があるため、(短時間ではありますが) 実行を待つ必要がある場合があります。この場合、自分だけがアクセスできることがわかっているカスタム キューを常に作成するのが最善でしょうか?

4

1 に答える 1

9
  • は優先度の高いキューを001 取得しますが、作成はしません。3つのグローバルキューは、アプリケーション用に自動的に作成されます。それらは常に利用可能です。
  • 3つのグローバルキューは、グローバル変数がグローバルであるのと同じ意味で、アプリケーション内でのみグローバルです。これらのキューは、それらが作成された各アプリケーションに対して引き続きプライベートです。
  • プライベートキューとグローバルキューの主な違いは、プライベートキューシーケンシャルであり、グローバルキューはコンカレントであるということです。2つの違いは、GCDドキュメントの表3-1にまとめられています。編集: OS X v10.7以降では、プライベートキューも渡すことで同時に実行できるようになりDISPATCH_QUEUE_CONCURRENTました(訂正してくれてありがとう、Rob)。
于 2012-09-04T16:49:25.653 に答える