Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die concurrent_queue-Klasse ist eine Sequenzcontainerklasse, die "First In, First Out"-Zugriff auf ihre Elemente zulässt. Sie aktiviert einen beschränkten Satz von parallelitätssicheren Vorgängen, z. B. push und try_pop. Hier sind Parallelitätssichere Zeiger oder Iteratoren immer gültig. Es gibt weder eine Garantie für die Initialisierung von Elementen noch für eine bestimmte Traversierungsreihenfolge.
Syntax
template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;
Parameter
T
Der Datentyp der Elemente, die in der Warteschlange gespeichert werden sollen.
_Ax
Der Typ, der das gespeicherte Allocator-Objekt darstellt, das Details zur Zuweisung und Freigabe des Speichers für diese konkurrierende Warteschlange kapselt. Dieses Argument ist optional, und der Standardwert ist allocator<T>.
Mitglieder
Öffentliche Typedefs
| Name | Beschreibung |
|---|---|
allocator_type |
Ein Typ, der die Allocator-Klasse für die Concurrent Queue darstellt. |
const_iterator |
Ein Typ, der einen nicht threadsicheren const Iterator für Elemente in einer gleichzeitigen Warteschlange darstellt. |
const_reference |
Ein Typ, der einen Verweis auf ein const Element bereitstellt, das in einer gleichzeitigen Warteschlange zum Lesen und Ausführen von const Vorgängen gespeichert ist. |
difference_type |
Ein Typ, der den signierten Abstand zwischen zwei Elementen in einer gleichzeitigen Warteschlange bereitstellt. |
iterator |
Ein Typ, der einen nicht threadsicheren Iterator für die Elemente in einer gleichzeitigen Warteschlange darstellt. |
reference |
Ein Typ, der einen Verweis auf ein Element bereitstellt, das in einer gleichzeitigen Warteschlange gespeichert ist. |
size_type |
Ein Typ, der die Anzahl der Elemente in einer gleichzeitigen Warteschlange zählt. |
value_type |
Ein Typ, der den Datentyp darstellt, der in einer gleichzeitigen Warteschlange gespeichert ist. |
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| concurrent_queue | Überladen. Erstellt eine gleichzeitige Warteschlange. |
| ~concurrent_queue Destruktor | Zerstört die gleichzeitige Warteschlange. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| clear | Löscht die konkurrierende Warteschlange und zerstört alle derzeit eingereihten Elemente. Diese Methode ist nicht nebenläufigkeitssicher. |
| empty | Testet, ob die gleichzeitige Warteschlange im Moment leer ist, wenn diese Methode aufgerufen wird. Diese Methode ist nebenläufigkeitssicher. |
| get_allocator | Gibt eine Kopie des Allocators zurück, der zum Erstellen der gleichzeitigen Warteschlange verwendet wird. Diese Methode ist nebenläufigkeitssicher. |
| push | Überladen. Fügt ein Element am Ende der gleichzeitigen Warteschlange hinzu. Diese Methode ist nebenläufigkeitssicher. |
| try_pop | Entfernt ein Element aus der Warteschlange, wenn ein Element verfügbar ist. Diese Methode ist nebenläufigkeitssicher. |
| unsafe_begin | Überladen. Gibt einen Iterator vom Typ iterator oder const_iterator an den Anfang der gleichzeitigen Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher. |
| unsafe_end | Überladen. Gibt einen Iterator vom Typ iterator oder const_iterator an das Ende der gleichzeitigen Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher. |
| unsafe_size | Gibt die Anzahl der Elemente in der Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher. |
Hinweise
Weitere Informationen finden Sie unter Parallel Containers and Objects.
Vererbungshierarchie
concurrent_queue
Anforderungen
Kopfzeile: concurrent_queue.h
Namespace: Parallelität
klar
Löscht die konkurrierende Warteschlange und zerstört alle derzeit eingereihten Elemente. Diese Methode ist nicht nebenläufigkeitssicher.
void clear();
concurrent_queue
Erstellt eine gleichzeitige Warteschlange.
explicit concurrent_queue(
const allocator_type& _Al = allocator_type());
concurrent_queue(
const concurrent_queue& _OtherQ,
const allocator_type& _Al = allocator_type());
concurrent_queue(
concurrent_queue&& _OtherQ,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_queue(_InputIterator _Begin,
_InputIterator _End);
Parameter
_InputIterator
Der Typ des Eingabe iterators, der einen Wertebereich angibt.
_Al
Die mit diesem Objekt zu verwendende Zuweisungsklasse.
_OtherQ
Das concurrent_queue-Quellobjekt, aus dem Elemente kopiert oder verschoben werden sollen.
_Anfangen
Die Position des ersten Elements in dem zu kopierenden Elementbereich.
_Ende
Die Position des ersten Elements, das sich jenseits des zu kopierenden Elementbereichs befindet.
Hinweise
Alle Konstruktoren speichern ein Allocator-Objekt _Al und initialisieren die Warteschlange.
Der erste Konstruktor gibt eine leere Anfangswarteschlange an und gibt explizit den zu verwendenden Allocatortyp an.
Der zweite Konstruktor gibt eine Kopie der gleichzeitigen Warteschlange _OtherQan.
Der dritte Konstruktor gibt eine Verschiebung der gleichzeitigen Warteschlange _OtherQan.
Der vierte Konstruktor liefert Werte, die vom Iteratorbereich [ _Begin, _End) bereitgestellt werden.
~concurrent_queue
Zerstört die gleichzeitige Warteschlange.
~concurrent_queue();
empty
Testet, ob die gleichzeitige Warteschlange im Moment leer ist, wenn diese Methode aufgerufen wird. Diese Methode ist nebenläufigkeitssicher.
bool empty() const;
Rückgabewert
true wenn die Concurrent Queue in dem Moment leer war, als wir nachgesehen haben, false andernfalls.
Hinweise
Obwohl diese Methode threadsicher in Bezug auf die Aufrufe der Methoden push, try_pop und empty ist, könnte der zurückgegebene Wert falsch sein, wenn er vom aufrufenden Thread überprüft wird.
get_allocator
Gibt eine Kopie des Allocators zurück, der zum Erstellen der gleichzeitigen Warteschlange verwendet wird. Diese Methode ist nebenläufigkeitssicher.
allocator_type get_allocator() const;
Rückgabewert
Eine Kopie des Allocators, der zum Erstellen der gleichzeitigen Warteschlange verwendet wird.
push
Fügt ein Element am Ende der gleichzeitigen Warteschlange hinzu. Diese Methode ist nebenläufigkeitssicher.
void push(const T& _Src);
void push(T&& _Src);
Parameter
_Src
Das Element, das der Warteschlange hinzugefügt werden soll.
Hinweise
push ist threadsicher in Bezug auf Aufrufe der Methoden push, try_pop und empty.
try_pop
Entfernt ein Element aus der Warteschlange, wenn ein Element verfügbar ist. Diese Methode ist nebenläufigkeitssicher.
bool try_pop(T& _Dest);
Parameter
_Dest
Ein Verweis auf einen Speicherort zum Speichern des dequeuierten Elements.
Rückgabewert
true wenn ein Element erfolgreich aus der Warteschlange entfernt wurde, false andernfalls.
Hinweise
Wenn ein Element erfolgreich dequeuiert wurde, empfängt der Parameter _Dest den dequeuierten Wert, der ursprüngliche Wert in der Warteschlange wird zerstört, und diese Funktion wird zurückgegeben true. Wenn kein Element zum Dequeue vorhanden ist, gibt diese Funktion false ohne Blockierung zurück, und der Inhalt des _Dest Parameters ist nicht definiert.
try_pop ist in Bezug auf Aufrufe der Methoden push, try_popund empty.
unsicher_beginnen
Gibt einen Iterator vom Typ iterator oder const_iterator an den Anfang der gleichzeitigen Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher.
iterator unsafe_begin();
const_iterator unsafe_begin() const;
Rückgabewert
Ein Iterator vom Typ iterator oder const_iterator zum Anfang des konkurrierenden Warteschlangenobjekts.
Hinweise
Die Iteratoren für die concurrent_queue Klasse sind in erster Linie für das Debuggen vorgesehen, da sie langsam sind und die Iteration in Bezug auf andere Warteschlangenvorgänge nicht parallel ist.
unsicheres Ende
Gibt einen Iterator vom Typ iterator oder const_iterator an das Ende der gleichzeitigen Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher.
iterator unsafe_end();
const_iterator unsafe_end() const;
Rückgabewert
Ein Iterator vom Typ iterator oder const_iterator bis zum Ende der gleichzeitigen Warteschlange.
Hinweise
Die Iteratoren für die concurrent_queue Klasse sind in erster Linie für das Debuggen vorgesehen, da sie langsam sind und die Iteration in Bezug auf andere Warteschlangenvorgänge nicht parallel ist.
unsafe_size
Gibt die Anzahl der Elemente in der Warteschlange zurück. Diese Methode ist nicht nebenläufigkeitssicher.
size_type unsafe_size() const;
Rückgabewert
Die Größe der gleichzeitigen Warteschlange.
Hinweise
unsafe_size ist nicht threadsicher und kann falsche Ergebnisse erzeugen, wenn es gleichzeitig mit Aufrufen der Methoden push, try_pop und empty aufgerufen wird.