Language

DispatchQueue クラス

定義

タスクを同期的または非同期的に実行できるタスク キューを提供します。

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
継承

注釈

キューは、Apple Grand Central Dispatch フレームワーク内で実行するためのブロックをスケジュールするための基本的なメカニズムです。

ディスパッチ キューに送信されたすべてのブロックは、FIFO 順にデキューされます。 既定では、既定のコンストラクターで作成されたキューは、以前にデキューされたブロックが完了するまで待機してから、次のブロックをデキューします。 この FIFO 完了動作は、単に "シリアル キュー" として記述される場合があります。 キューは特定の実行スレッドにバインドされず、独立したキューに送信されたブロックは同時に実行される可能性があります。 すべてのディスパッチ オブジェクトと同様に、キューは参照カウントされ、新しく作成されたキューの参照カウントは 1 になります。

同時実行ディスパッチ キューは、コンストラクターの同時実行パラメーターの値として true を渡すことによって作成されます。 同時実行キューは、ブロックを同時に呼び出すことができます (グローバル同時実行キューと同様ですが、オーバーヘッドが高くなる可能性があります)。ディスパッチ バリア API を使用して送信されたバリア ブロックをサポートします。これにより、効率的なリーダー ライター スキームの実装が可能になります。

省略可能なラベル引数は、キューの目的を説明するために使用され、デバッグとパフォーマンス分析中に役立ちます。 慣例により、クライアントは逆引き DNS スタイルラベルを渡す必要があります。 ラベルが指定されている場合は、コピーされます。 ラベルが指定されていない場合、Label プロパティは空の C 文字列を返します。 例:

var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");

キューは一時的に中断され、関数 Suspend() と Resume() で再開される場合があります。 中断はブロック実行の前にチェックされ、割り込みではありません。

ディスパッチ キューは SynchronizationContext 認識されており、スレッドにカスタム同期コンテキストが設定されていない限り、コンテキストディスパッチが同じディスパッチ キューに確実に配置されるように、独自の同期コンテキストがインストールされます。

ディスパッチ バリア API

ディスパッチ バリア API は、 DispatchAsync(Action)/DispatchSync(Action) メソッドと同様に、ディスパッチ キューにバリア ブロックを送信するためのメカニズムです。 これにより、効率的なリーダー/ライター スキームの実装が可能になります。 バリア ブロックは、同時実行キューに送信された場合にのみ特別に動作します。このようなキューでは、前にキューに送信されたすべてのブロックが完了するまでバリア ブロックは実行されず、バリア ブロックの後にキューに送信されたブロックは、バリア ブロックが完了するまで実行されません。 グローバル キューまたは非同時実行キューに送信されたバリア ブロックは、 DispatchAsync(Action)/DispatchSync(Action) メソッドで送信されたブロックと同じように動作します。

コンストラクター

Name 説明
DispatchQueue(String, Boolean)

任意の送信されたコードを同時に実行できる名前付きディスパッチ キューを作成します。

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchQueue(String)

送信されたすべてのブロックをシリアル化する名前付きディスパッチ キューを作成します。

プロパティ

Name 説明
Context

DispatchQueue にアタッチするユーザー定義のコンテキスト情報。

CurrentQueue

開発者は、この非推奨のプロパティを使用しないでください。

CurrentQueueLabel

現在のキューのラベル。

DefaultGlobalQueue

既定のグローバル キューを返します。これは、既定の優先度の組み込みキューの 1 つです。

Handle

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
Label

この DispatchQueue のラベルを返します。

MainQueue

メイン グローバル キューを返します。

Owns

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
QualityOfService

タスクを同期的または非同期的に実行できるタスク キューを提供します。

メソッド

Name 説明
Activate()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DispatchObject)
ClearHandle()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
DispatchAfter(DispatchTime, Action)

指定した時刻以降にこの時刻を実行します。

DispatchAfter(DispatchTime, DispatchBlock)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchAsync(Action)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchAsync(DispatchBlock)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchBarrierAsync(Action)

ディスパッチ キューで非同期実行用のバリア ブロックを送信します

DispatchBarrierAsync(DispatchBlock)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchBarrierSync(Action)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchBarrierSync(DispatchBlock)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchSync(Action)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

DispatchSync(DispatchBlock)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

Dispose()

このオブジェクトで使用されるすべてのリソースを解放します。

(継承元 DisposableObject)
Dispose(Boolean)

このオブジェクトで使用されるリソースを解放します。

(継承元 NativeObject)
Equals(Object)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
GetCheckedHandle()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
GetGlobalQueue(DispatchQualityOfService)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

GetGlobalQueue(DispatchQueuePriority)

要求された優先度に基づいて、グローバル ディスパッチ キューの 1 つを返します。

GetHashCode()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
GetQualityOfService(Int32)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

GetSpecific(IntPtr)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

InitializeHandle(NativeHandle)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DisposableObject)
MainIteration()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

Release()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DispatchObject)
Resume()

キューの実行を再開します。

Retain()

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DispatchObject)
SetSpecific(IntPtr, Object)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

SetTargetQueue(DispatchQueue)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

(継承元 DispatchObject)
Submit(Action<Int32>, Int64)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

Suspend()

キューの実行を中断します。

拡張メソッド

Name 説明
GetHandle(INativeObject)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

GetNonNullHandle(INativeObject, String)

タスクを同期的または非同期的に実行できるタスク キューを提供します。

適用対象

関連項目