を非同期タスクを実行しているときに我々は競合状態に直面する可能性がある方法は、シリアルキューで実行中の複数の非同期タスクが同じ共有リソースにアクセスしている場合と仮定あり、我々は競合状態に直面する可能性のあるチャンスがあるのですか?私が追加したコメントに続いてシリアルキューに
Q
シリアルキューに
0
A
答えて
1
が、これはApple docから取得されます。太字で私はあなたが探しているものに重点を置いています。 (また、プライベートディスパッチキューとして知られている)
シリアルキュー彼らはキューに追加された順序で一度に一つのタスク を実行します。 現在実行中のタスクは、ディスパッチキューによって管理される別個のスレッド(タスクごとに を変更する可能性があります)で実行されます。 シリアル キューは、特定のリソースへのアクセスを同期させるためによく使用されます。
代わりに並行キューを使用している場合、競合状態になる可能性があります。たとえば、ディスパッチバリアを使用してそれを防ぐことができます。詳細は、Grand Central Dispatch In-Depth: Part 1/2を参照してください。
NSOperation
については
とNSOperationQueue
同じことが当てはまります。 NSOperationQueue
はmaxConcurrentOperationCount
を1
に設定してシリアル化することができます。さらに、操作による依存関係を使用して、共有リソースへのアクセスを同期することができます。
関連する問題
- 1. シリアルキューを持つCMMotionManager
- 2. GCDを使用したFIFOシリアルキュー
- 3. シリアルキューに私は次のコードを試みた
- 4. メインキューのUIViewアニメーションを中断するシリアルキュー同期メソッド
- 5. GCD非同期、シリアルキュー - キューサイズを制限できますか?
- 6. シリアルキューを使用する場合のUIの更新
- 7. シリアルキューのiPhoneアプリケーションのコアデータを読み取る
- 8. Androidでシリアルキューを作成する方法は? iOS版で
- 9. GCDシリアルキューのNSTimersをスケジュールして無効にするのは安全ですか?
- 10. タスクの完了時にシリアルキュー/プライベートディスパッチキューはどのようにして知りますか?
- 11. メインで作成された同期コールのシリアルキューは正常ですが、メインの同期コールメインキューはDEAD-LOCKです
- 12. 現在のキューでの同期ディスパッチ
- 13. スウィフトキュー/並行性とロック
- 14. さまざまなディスパッチキューのタスクを同期させる方法は?
- 15. Swift 3でQoS属性を指定してdispatch_queueを作成するにはどうすればよいですか?
- 16. シリアル処理のサイズ1のタスクキュー
- 17. 完了ハンドラをシリアルグランドセントラルディスパッチ
- 18. Grand Central Dispatchでデッドロックを作成するにはどうすればよいですか?アップルのドキュメントで
- 19. なぜBOOLに直接アクセスできないのですか:_myBool?
- 20. dataTaskを作成するときにAlamofireがdispatch_sync()関数を使用するのはなぜですか?
- 21. お互いに依存しているiOSで実行中のタスクを実行する方法
- 22. クラス間でシリアルディスパッチキューを共有するには?
- 23. NSMainQueueConcurrencyTypeコンテキストとNSPrivateQueueConcurrencyTypeコンテキストの同時実行性?
- 24. UIscrollviewでの写真の遅延読み込み
- 25. 派遣キューとNSOperationキュー
- 26. 不正なスレッドでレルムアクセスを防止する方法
- 27. は、2つのオブジェクト、私はデッドロックを取得しています疑いがあるため、行動上の
- 28. これは必然的にクラッシュする場合、AppleがOpenGLコマンドをシリアルバックグラウンドキューにディスパッチする理由を教えてください。
- 29. 正しいキューでManagedObjectContextを初期化する方法は?
- 30. スイフト3:OS_dispatch_queue_serialがデフォルトのキューになっているのはなぜですか?私は、次の遊び場を実行すると
お返事ありがとうございます。私はリンクを通過します。あなたが大胆に指摘したように、皆が言っていることですが、シリアルキュー上で実行される2つの非同期タスクが共通リソースを変更すると、競合状態に直面する可能性があります。 – Kishoretheju
@Kishoretheju Nope、リソースは連続して触れることができるので、最初のタスクはリソースにアクセスし、これが終了すると、もう一方のリソースはリソースにアクセスできます。構築により、これはシリアル待ち行列のような直列構造によって実施される。 –
ありがとうございます。シリアルキューの詳細については、こちらをご覧ください。 – Kishoretheju