語言

DispatchQueue 類別

定義

提供一個任務佇列,可同步或非同步執行任務。

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

備註

佇列是 Apple Grand Central Dispatch 框架中排程區塊執行的基本機制。

所有提交到派遣佇列的區塊都會依 FIFO 順序進行出隊。 預設情況下,使用預設建構子建立的佇列會等待先前被出隊的區塊完成後,才會下排下一個區塊。 這種 FIFO 完成行為有時簡稱為「序列佇列」。 佇列不會綁定在任何特定的執行執行緒,提交給獨立佇列的區塊可以同時執行。 佇列和所有派遣物件一樣,會被引用計數,而新建立的隊列則有參考計數為一。

並行派遣佇列是透過傳遞 true 作為建構子中並行參數的值來建立的。 並行佇列可同時呼叫區塊(類似全域並行佇列,但可能有更多開銷),並支援以派遣障礙 API 提交的障礙區塊,例如實現高效的讀寫方案。

可選的標籤參數用於描述佇列的目的,並在除錯與效能分析中非常有用。 依慣例,用戶端應該傳遞反向 DNS 風格標籤。 若提供標籤,則會被複製。 若未提供標籤,則 Label 屬性會回傳空的 C 字串。 例如:

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

佇列可以暫時暫停,並分別以 和 Resume() 的函式Suspend()恢復。 暫停會在區塊執行前檢查,且非搶先執行。

派遣隊列會 SynchronizationContext 知道,除非執行緒有自訂的同步情境,否則會自行安裝同步情境,以確保任何情境派遣都會落在同一個派遣隊列。

派遣障礙 API

dispatch barrier API 是一種將 barrier 區塊提交到派遣佇列的機制,類似於這些 DispatchAsync(Action)/DispatchSync(Action) 方法。 它使得高效的讀寫方案得以實現。 障礙區塊僅在提交至並行佇列時才會特別表現;在此類佇列中,障礙區塊會在先前提交至該佇列的所有區塊完成前才會執行,而在障礙區塊之後提交到佇列的區塊也不會在障礙區塊完成前執行。 當提交到全域佇列或非並行佇列時,障礙區塊的行為與以這些 DispatchAsync(Action)/DispatchSync(Action) 方法提交的區塊相同。

建構函式

名稱 Description
DispatchQueue(String, Boolean)

建立一個命名的派遣佇列,可選擇性地同時執行任何提交的程式碼。

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

提供一個任務佇列,可同步或非同步執行任務。

DispatchQueue(String)

建立一個命名的派遣隊列,將所有提交的區塊序列化。

屬性

名稱 Description
Context

使用者定義的上下文資訊附加於派遣佇列。

CurrentQueue

開發者不應使用這個已棄用的特性。

CurrentQueueLabel

目前佇列的標籤。

DefaultGlobalQueue

回傳預設的全域佇列,這是內建佇列之一,且以預設優先順序存在。

Handle

提供一個任務佇列,可同步或非同步執行任務。

(繼承來源 DisposableObject)
Label

回傳此 DispatchQueue 的標籤。

MainQueue

回傳主全域佇列。

Owns

提供一個任務佇列,可同步或非同步執行任務。

(繼承來源 DisposableObject)
QualityOfService

提供一個任務佇列,可同步或非同步執行任務。

方法

名稱 Description
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)

根據請求的優先權回傳其中一個全域派遣佇列。

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()

暫停佇列的執行。

擴充方法

名稱 Description
GetHandle(INativeObject)

提供一個任務佇列,可同步或非同步執行任務。

GetNonNullHandle(INativeObject, String)

提供一個任務佇列,可同步或非同步執行任務。

適用於

另請參閱