DispatchQueue クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
同期的または非同期的にタスクを実行できるタスク キューを提供します。
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- 継承
- 継承
注釈
キューは、Apple Grand Central Dispatch フレームワーク内で実行するためのブロックをスケジュールするための基本的なメカニズムです。
ディスパッチ キューに送信されたすべてのブロックは、FIFO 順にデキューされます。 既定では、既定のコンストラクターを使用して作成されたキューは、以前にデキューされたブロックが完了するまで待ってから、次のブロックをデキューします。 この FIFO 入力候補の動作は、単に "シリアル キュー" と記述される場合があります。 キューは特定の実行スレッドにバインドされず、独立したキューに送信されたブロックは同時に実行される可能性があります。 すべてのディスパッチ オブジェクトと同様に、キューは参照カウントされ、新しく作成されたキューの参照カウントは 1 になります。
同時実行ディスパッチ キューは、コンストラクターの同時実行パラメーターの値として を渡 true
すことによって作成されます。 同時実行キューは、ブロックを同時に呼び出すことができます (グローバル同時実行キューと同様ですが、オーバーヘッドが増加する可能性があります)。ディスパッチ バリア API を使用して送信されたバリア ブロックをサポートします。たとえば、効率的なリーダー ライター スキームの実装が可能になります。
オプションの label 引数は、キューの目的を説明するために使用され、デバッグとパフォーマンス分析の際に役立ちます。 慣例により、クライアントは逆引き DNS スタイルのラベルを渡す必要があります。 ラベルが指定されている場合は、コピーされます。 ラベルが指定されていない場合、Label プロパティは空の C 文字列を返します。 例:
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
キューは一時的に中断され、関数Suspend()Resume()と共に再開される場合があります。 中断はブロック実行の前にチェックされ、プリエンプティブではありません。
ディスパッチ キューは T:System.Threading.SynchronizationContext 対応であり、スレッドにカスタム同期コンテキストが設定されていない限り、コンテキストディスパッチが同じディスパッチ キューで終わるように独自の同期コンテキストをインストールします。
ディスパッチ バリア API
ディスパッチ バリア API は、メソッドと同様に、ディスパッチ キューにバリア ブロックを DispatchAsync(Action)/DispatchSync(Action) 送信するためのメカニズムです。 これにより、効率的なリーダー/ライター スキームの実装が可能になります。 バリア ブロックは、同時キューに送信された場合にのみ特別に動作します。このようなキューでは、前にキューに送信されたすべてのブロックが完了するまでバリア ブロックは実行されず、バリア ブロックが完了するまでバリア ブロックの後にキューに送信されたブロックは実行されません。 グローバル キューまたは非同時実行キューに送信された場合、バリア ブロックは メソッドで送信されたブロックと DispatchAsync(Action)/DispatchSync(Action) 同じように動作します。
コンストラクター
DispatchQueue(IntPtr) |
アンマネージ DispatchQueue をマネージド オブジェクトとして表示します。 |
DispatchQueue(String) |
送信されたすべてのブロックをシリアル化する名前付きディスパッチ キューを作成します。 |
DispatchQueue(String, Boolean) |
送信されたコードを同時に実行できる名前付きディスパッチ キューを作成します。 |
DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
プロパティ
Context |
ユーザー定義のコンテキスト情報は、DispatchQueue にアタッチされます。 |
CurrentQueue |
開発者は、この非推奨のプロパティを使用しないでください。 |
CurrentQueueLabel |
現在のキューのラベル。 |
DefaultGlobalQueue |
既定の優先度の組み込みキューの 1 つである既定のグローバル キューを返します。 |
Handle |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Label |
この DispatchQueue のラベルを返します。 |
MainQueue |
メイン グローバル キューを返します。 |
QualityOfService |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
メソッド
Activate() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Check() |
古い.
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
DispatchAfter(DispatchTime, Action) |
指定した時刻以降にこの時刻を実行します。 |
DispatchAfter(DispatchTime, DispatchBlock) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchAsync(Action) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchAsync(DispatchBlock) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchBarrierAsync(Action) |
ディスパッチ キューで非同期実行するためのバリア ブロックを送信します |
DispatchBarrierAsync(DispatchBlock) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchBarrierSync(Action) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchBarrierSync(DispatchBlock) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchSync(Action) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
DispatchSync(DispatchBlock) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
Dispose() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Dispose(Boolean) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Equals(Object) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
GetGlobalQueue(DispatchQueuePriority) |
要求された優先度に基づいて、グローバル ディスパッチ キューの 1 つを返します。 |
GetHashCode() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
GetQualityOfService(Int32) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
GetSpecific(IntPtr) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
InitializeHandle(IntPtr) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 NativeObject) |
MainIteration() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
Release() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Resume() |
キューの実行を再開します。 |
Retain() |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
SetSpecific(IntPtr, Object) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
SetTargetQueue(DispatchQueue) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 (継承元 DispatchObject) |
Submit(Action<Int32>, Int64) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
Suspend() |
キューの実行を中断します。 |
演算子
Equality(DispatchQueue, DispatchQueue) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |
Inequality(DispatchQueue, DispatchQueue) |
同期的または非同期的にタスクを実行できるタスク キューを提供します。 |