2

GCD関数dispatch_barrier_asyncを試してみると、によって作成されたキューで期待どおりに機能しましたdispatch_queue_createが、によって作成されたグローバルキューに配置するとdispatch_get_global_queue、バリアが機能しなくなったようです= =、誰か説明できますか? ありがとう〜 デモ画像

4

2 に答える 2

3

これは驚くべきことではなく、文書化された動作です。

これを使用して自分で作成したキューにブロックを追加すると、完了するまで他のすべてのブロックがブロックされます。パブリック キューに追加すると、次のように動作します。dispatch_async

https://developer.apple.com/reference/dispatch/1452797-dispatch_barrier_asyncのドキュメント

どの州:

指定するキューは、dispatch_queue_create 関数を使用して自分で作成した並行キューでなければなりません。この関数に渡すキューがシリアル キューまたはグローバル同時実行キューの 1 つである場合、この関数は dispatch_async 関数のように動作します。

于 2016-07-31T10:49:36.407 に答える