Język

DispatchQueue Klasa

Definicja

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
Dziedziczenie

Uwagi

Kolejki są podstawowym mechanizmem planowania bloków do wykonania w ramach struktury Apple Grand Central Dispatch.

Wszystkie bloki przesłane do kolejki wysyłania są dequeued w kolejności FIFO. Domyślnie kolejki utworzone za pomocą konstruktora domyślnego oczekują, aż poprzednio zdequeued blok zostanie ukończony przed usunięciem kolejki następnego bloku. To zachowanie uzupełniania FIFO jest czasami po prostu opisane jako "kolejka szeregowa". Kolejki nie są powiązane z żadnym określonym wątkiem wykonywania, a bloki przesyłane do niezależnych kolejek mogą być wykonywane współbieżnie. Kolejki, podobnie jak wszystkie obiekty wysyłania, są zliczane odwołania, a nowo utworzone kolejki mają liczbę odwołań.

Kolejki wysyłania współbieżnego są tworzone przez przekazanie true jako wartości parametru współbieżnego w konstruktorze. Kolejki współbieżne mogą wywoływać bloki współbieżnie (podobnie jak globalne kolejki współbieżne, ale potencjalnie z większym obciążeniem) i obsługiwać bloki barier przesłane za pomocą interfejsu API bariery wysyłania, co umożliwia np. implementację wydajnych schematów modułów zapisywania czytników.

Opcjonalny argument etykiety służy do opisywania celu kolejki i jest przydatny podczas debugowania i analizy wydajności. Zgodnie z konwencją klienci powinni przekazać odwrotną etykietę stylu DNS. Jeśli zostanie podana etykieta, zostanie skopiowana. Jeśli etykieta nie jest podana, właściwość Label zwraca pusty ciąg języka C. Na przykład:

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

Kolejki mogą być tymczasowo zawieszone i wznawiane z funkcjami Suspend() i Resume() odpowiednio. Zawieszenie jest sprawdzane przed wykonaniem bloku i nie jest preemptive.

Kolejka wysyłania jest SynchronizationContext świadoma i chyba że istnieje niestandardowy kontekst synchronizacji dla wątku, zainstaluje własny kontekst synchronizacji, aby upewnić się, że każda wysyłka kontekstu kończy się w tej samej kolejce wysyłania.

Interfejs API bariery wysyłania

Interfejs API bariery wysyłania to mechanizm przesyłania bloków bariery do kolejki wysyłania, analogicznie do DispatchAsync(Action)/DispatchSync(Action) metod. Umożliwia implementację wydajnych schematów czytników/modułów zapisywania. Bloki barier zachowują się specjalnie tylko w przypadku przesłania do kolejek współbieżnych; w takiej kolejce blok bariery nie będzie uruchamiany, dopóki wszystkie bloki przesłane do kolejki wcześniej nie zostaną zakończone, a wszystkie bloki przesłane do kolejki po zablokowaniu bariery nie będą działać do momentu zakończenia bloku bariery. W przypadku przesłania do kolejki globalnej lub do kolejki niebieżnej bloki barier zachowują się identycznie, aby bloki przesyłane za DispatchAsync(Action)/DispatchSync(Action) pomocą metod.

Konstruktory

Nazwisko Opis
DispatchQueue(String, Boolean)

Tworzy nazwaną kolejkę wysyłania, która może opcjonalnie wykonywać dowolny przesłany kod współbieżnie.

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchQueue(String)

Tworzy nazwaną kolejkę wysyłania, która serializuje wszystkie przesłane bloki.

Właściwości

Nazwisko Opis
Context

Dołączanie informacji kontekstowych zdefiniowanych przez użytkownika do kolejki DispatchQueue.

CurrentQueue

Deweloperzy nie powinni używać tej przestarzałej właściwości.

CurrentQueueLabel

Etykieta dla bieżącej kolejki.

DefaultGlobalQueue

Zwraca domyślną kolejkę globalną, która jest jedną z wbudowanych kolejek z domyślnym priorytetem.

Handle

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
Label

Zwraca etykietę dla tej kolejki DispatchQueue.

MainQueue

Zwraca główną kolejkę globalną.

Owns

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
QualityOfService

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

Metody

Nazwisko Opis
Activate()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DispatchObject)
ClearHandle()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
DispatchAfter(DispatchTime, Action)

Wykonuje ten czas w określonym czasie lub po upływie określonego czasu.

DispatchAfter(DispatchTime, DispatchBlock)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchAsync(Action)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchAsync(DispatchBlock)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchBarrierAsync(Action)

Przesyła blok bariery na potrzeby asynchronicznego wykonywania w kolejce wysyłania

DispatchBarrierAsync(DispatchBlock)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchBarrierSync(Action)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchBarrierSync(DispatchBlock)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchSync(Action)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

DispatchSync(DispatchBlock)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

Dispose()

Zwalnia wszystkie zasoby używane przez ten obiekt.

(Odziedziczone po DisposableObject)
Dispose(Boolean)

Zwalnia zasoby używane przez ten obiekt.

(Odziedziczone po NativeObject)
Equals(Object)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
GetCheckedHandle()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
GetGlobalQueue(DispatchQualityOfService)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

GetGlobalQueue(DispatchQueuePriority)

Zwraca jedną z globalnych kolejek wysyłania na podstawie żądanego priorytetu.

GetHashCode()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
GetQualityOfService(Int32)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

GetSpecific(IntPtr)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

InitializeHandle(NativeHandle)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DisposableObject)
MainIteration()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

Release()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DispatchObject)
Resume()

Wznawia wykonywanie kolejki.

Retain()

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DispatchObject)
SetSpecific(IntPtr, Object)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

SetTargetQueue(DispatchQueue)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

(Odziedziczone po DispatchObject)
Submit(Action<Int32>, Int64)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

Suspend()

Zawiesza wykonywanie kolejki.

Metody rozszerzania

Nazwisko Opis
GetHandle(INativeObject)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

GetNonNullHandle(INativeObject, String)

Udostępnia kolejkę zadań, która może wykonywać zadania synchronicznie lub asynchronicznie.

Dotyczy

Zobacz też