キューの種類の違いを理解しようとしています。私が理解しているように、3つのタイプがあります:
- グローバルキュー-同時-ブロックは、順序に関係なくできるだけ早く実行されます
- メインキュー-シリアル-ブロックは送信されたときに実行されます
- プライベートキュー-シリアル
私が疑問に思っているのは、各種類のキューに送信されたときのdispatch_syncとdispatch_asyncの違いは何ですか?これは私がこれまでにそれを理解する方法です:
dispatch_sync(global_queue)^
{
// blocks are executed one after the other in no particular order
// example: block 3 executes. when it finishes block 7 executes.
}
dispatch_async(global_queue)^
{
// blocks are executed concurrently in no particular order
// example: blocks 2,4,5,7 execute at the same time.
}
dispatch_sync(main_queue)^
{
// blocks are executed one after the other in the order they were submitted
// example: block 1 executes. when it finishes block 2 will execute and so forth.
}
dispatch_async(main_queue)^
{
// blocks are executed concurrently in the order they were submitted
// example: blocks 1-4 (or whatever amount of threads the system can handle at one time) will fire at the same time.
// when the first block completes block 5 will then execute.
}
これに対する私の認識がどれだけ正しいか知りたいのですが。