0

を非同期タスクを実行しているときに我々は競合状態に直面する可能性がある方法は、シリアルキューで実行中の複数の非同期タスクが同じ共有リソースにアクセスしている場合と仮定あり、我々は競合状態に直面する可能性のあるチャンスがあるのですか?私が追加したコメントに続いてシリアルキューに

答えて

1

が、これはApple docから取得されます。太字で私はあなたが探しているものに重点を置いています。 (また、プライベートディスパッチキューとして知られている)

シリアルキュー彼らはキューに追加された順序で一度に一つのタスク を実行します。 現在実行中のタスクは、ディスパッチキューによって管理される別個のスレッド(タスクごとに を変更する可能性があります)で実行されます。 シリアル キューは、特定のリソースへのアクセスを同期させるためによく使用されます。

代わりに並行キューを使用している場合、競合状態になる可能性があります。たとえば、ディスパッチバリアを使用してそれを防ぐことができます。詳細は、Grand Central Dispatch In-Depth: Part 1/2を参照してください。

NSOperationについては

NSOperationQueue同じことが当てはまります。 NSOperationQueuemaxConcurrentOperationCount1に設定してシリアル化することができます。さらに、操作による依存関係を使用して、共有リソースへのアクセスを同期することができます。

+0

お返事ありがとうございます。私はリンクを通過します。あなたが大胆に指摘したように、皆が言っていることですが、シリアルキュー上で実行される2つの非同期タスクが共通リソースを変更すると、競合状態に直面する可能性があります。 – Kishoretheju

+0

@Kishoretheju Nope、リソースは連続して触れることができるので、最初のタスクはリソースにアクセスし、これが終了すると、もう一方のリソースはリソースにアクセスできます。構築により、これはシリアル待ち行列のような直列構造によって実施される。 –

+0

ありがとうございます。シリアルキューの詳細については、こちらをご覧ください。 – Kishoretheju

関連する問題