勤務先の会社用に (ネットワーク) 同期アレイを作成しようとしています。ネットワーキング部分は正常に動作しますが、私は問題に悩まされています。
私の望みは、 を使用して新しいキューを作成することでした。これに、メイン スレッドで実行されないdispatch_create_queue
2 つのブロックをシリアルに追加します。つまり、最初に最初のブロックが実行され、次に 2 番目のブロックが実行され、決して実行されることはありません。平行。
Apple のドキュメントを読みましたが、控えめに言ってもわかりにくいです。
を使用してキューを作成し
dispatch_queue_create
、ブロックを (ブロックが定義された後に) を使用して追加するdispatch_sync
と、ブロックがまだメインスレッドで実行されていることがわかりました。を使用する
dispatch_async
場合、それはブロックがメインスレッドで実行されていないときです。を使用して両方のブロックを追加しようとすると、
dispatch_sync
永久にブロックされます。両方のブロックが正常に実行され、メイン スレッドから離れているように見えるのは、
dispatch_async
.
しかし、GCD と sync メソッドを選択した理由は、新しいキュー (したがって新しいスレッド) を作成していて、そのキューにブロックを追加すると、もう一方の実行が完了するまで一方をブロックするだけだという印象を受けたためです。そうではありませんか、それともキューを作成しても、コードがメイン スレッドで実行されないという保証はありませんか?