DispatchQueue クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
タスクを同期的または非同期的に実行できるタスク キューを提供します。
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) |
タスクを同期的または非同期的に実行できるタスク キューを提供します。 |