は私が順番にdispatch_async()
3回を呼び出すとしますメインのGrand Central Dispatchキューはシリアルまたはコンカレントですか?
dispatch_async(dispatch_get_main_queue(),
^{
[self doOne];
});
// some code here
dispatch_async(dispatch_get_main_queue(),
^{
[self doTwo];
});
// more code here
dispatch_async(dispatch_get_main_queue(),
^{
[self doThree];
});
は、これは常に、その後
[self doOne]
、[self doTwo]
、[self doThree]
と同様に実行、または順序が保証されていることでしょうか?
この場合、メインキューがシリアルまたはコンカレントであるかどうかが疑問です。ドキュメントから
また、ブロックが同じスレッドで実行されるため、シリアルにする必要があります。 1つのスレッドが複数のブロックを同時に実行できる方法はありません。 – Sven
@Robはい、メインキューにサブミットされたブロックはメインスレッドで実行されます。それがメインキューの全体のポイントです。キューはブロックを実行しません。ブロックは常にスレッドによって発生します。通常はGCDが管理するプライベートスレッドですが、メインキューのメインスレッドです。 – Sven
@Svenあなたは私を誤解しました。私の要点は、これがメインキューに当てはまることを明確にすることであり、一般的なキューには適用されません。 – Rob