Freigeben über


concurrent_priority_queue-Klasse

Die concurrent_priority_queue-Klasse ist ein Container, der es mehreren Threads gleichzeitig ermöglicht, für Elemente die Vorgänge "push" und "pop" auszuführen. Elemente werden in Reihenfolge ihrer Priorität per pop ausgelesen, wenn die Priorität mit einem als Vorlagenargument angegebenen Funktionselement bestimmt wird.

Syntax

template <typename T,
    typename _Compare= std::less<T>,
    typename _Ax = std::allocator<T>
>,
    typename _Ax = std::allocator<T>> class concurrent_priority_queue;

Parameter

T
Der Datentyp der Elemente, die in der Prioritätswarteschlange gespeichert werden sollen.

_Vergleichen
Der Typ des Funktionsobjekts, das zwei Elementwerte als Sortierschlüssel vergleichen kann, um die relative Reihenfolge in der Prioritätswarteschlange zu bestimmen. Dieses Argument ist optional, und das binäre Prädikat less<T> ist der Standardwert.

_Axt
Der Typ, der das gespeicherte Allocatorobjekt darstellt, das Details zur Zuordnung und Zuordnung des Speichers für die gleichzeitige Prioritätswarteschlange kapselt. Dieses Argument ist optional, und der Standardwert ist allocator<T>.

Member

Öffentliche Typedefs

Name Beschreibung
allocator_type Ein Typ, der die Allocator-Klasse für die gleichzeitige Prioritätswarteschlange darstellt.
const_reference Ein Typ, der einen Konstverweis auf ein Element des Typs darstellt, der in einer gleichzeitigen Prioritätswarteschlange gespeichert ist.
reference Ein Typ, der einen Verweis auf ein Element des Typs darstellt, der in einer gleichzeitigen Prioritätswarteschlange gespeichert ist.
size_type Ein Typ, der die Anzahl der Elemente in einer gleichzeitigen Prioritätswarteschlange zählt.
value_type Ein Typ, der den Datentyp darstellt, der in einer gleichzeitigen Prioritätswarteschlange gespeichert ist.

Öffentliche Konstruktoren

Name Beschreibung
concurrent_priority_queue Überladen. Erstellt eine Warteschlange mit gleichzeitiger Priorität.

Öffentliche Methoden

Name Beschreibung
clear Löscht alle Elemente in der gleichzeitigen Priorität. Diese Methode ist nicht nebenläufigkeitssicher.
empty Testet, ob die gleichzeitige Prioritätswarteschlange zum Zeitpunkt des Aufrufs dieser Methode leer ist. Diese Methode ist nebenläufigkeitssicher.
get_allocator Gibt eine Kopie des Allocators zurück, der zum Erstellen der gleichzeitigen Prioritätswarteschlange verwendet wird. Diese Methode ist nebenläufigkeitssicher.
push Überladen. Fügt der Warteschlange für gleichzeitige Priorität ein Element hinzu. Diese Methode ist nebenläufigkeitssicher.
size Gibt die Anzahl der Elemente in der gleichzeitigen Prioritätswarteschlange zurück. Diese Methode ist nebenläufigkeitssicher.
swap Tauscht den Inhalt von zwei gleichzeitigen Prioritätswarteschlangen aus. Diese Methode ist nicht nebenläufigkeitssicher.
try_pop Entfernt und gibt das Element mit der höchsten Priorität aus der Warteschlange zurück, wenn die Warteschlange nicht leer ist. Diese Methode ist nebenläufigkeitssicher.

Öffentliche Operatoren

Name Beschreibung
operator= Überladen. Weist den Inhalt eines anderen concurrent_priority_queue-Objekts diesem Objekt zu. Diese Methode ist nicht nebenläufigkeitssicher.

Hinweise

Ausführliche Informationen zur concurrent_priority_queue Klasse finden Sie unter Parallel Containers and Objects.

Vererbungshierarchie

concurrent_priority_queue

Anforderungen

Kopfzeile: concurrent_priority_queue.h

Namespace: Parallelität

clear

Löscht alle Elemente in der gleichzeitigen Priorität. Diese Methode ist nicht nebenläufigkeitssicher.

void clear();

Hinweise

clear ist nicht gleichzeitig sicher. Sie müssen sicherstellen, dass keine anderen Threads Methoden für die gleichzeitige Prioritätswarteschlange aufrufen, wenn Sie diese Methode aufrufen. clear gibt keinen Freien Arbeitsspeicher frei.

concurrent_priority_queue

Erstellt eine Warteschlange mit gleichzeitiger Priorität.

explicit concurrent_priority_queue(
    const allocator_type& _Al = allocator_type());

explicit concurrent_priority_queue(
    size_type _Init_capacity,
    const allocator_type& _Al = allocator_type());

template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
    _InputIterator _End,
    const allocator_type& _Al = allocator_type());

concurrent_priority_queue(
    const concurrent_priority_queue& _Src);

concurrent_priority_queue(
    const concurrent_priority_queue& _Src,
    const allocator_type& _Al);

concurrent_priority_queue(
    concurrent_priority_queue&& _Src);

concurrent_priority_queue(
    concurrent_priority_queue&& _Src,
    const allocator_type& _Al);

Parameter

_InputIterator
Der Typ des Eingabeiterators.

_Al
Die mit diesem Objekt zu verwendende Zuweisungsklasse.

_Init_capacity
Die Anfangskapazität des concurrent_priority_queue-Objekts.

_Anfangen
Die Position des ersten Elements in dem zu kopierenden Elementbereich.

_Ende
Die Position des ersten Elements nach dem zu kopierenden Elementbereich.

_Src
Das concurrent_priority_queue-Quellobjekt, aus dem Elemente kopiert oder verschoben werden sollen.

Hinweise

Alle Konstruktoren speichern ein Allocator-Objekt _Al und initialisieren die Prioritätswarteschlange.

Der erste Konstruktor gibt eine leere Anfangsprioritätswarteschlange an und gibt optional einen Zuweisungsgeber an.

Der zweite Konstruktor gibt eine Prioritätswarteschlange mit einer anfänglichen Kapazität _Init_capacity an und gibt optional einen Zuweisungsgeber an.

Der dritte Konstruktor gibt Werte an, die vom Iteratorbereich [ _Begin, _End) angegeben werden und optional einen Zuweisungsgeber angibt.

Die vierten und fünften Konstruktoren geben eine Kopie der Prioritätswarteschlange _Srcan.

Die sechsten und siebten Konstruktoren geben eine Verschiebung der Prioritätswarteschlange _Srcan.

empty

Testet, ob die gleichzeitige Prioritätswarteschlange zum Zeitpunkt des Aufrufs dieser Methode leer ist. Diese Methode ist nebenläufigkeitssicher.

bool empty() const;

Rückgabewert

true wenn die Prioritätswarteschlange zum Zeitpunkt des Aufrufs der Funktion leer war, false andernfalls.

get_allocator

Gibt eine Kopie des Allocators zurück, der zum Erstellen der gleichzeitigen Prioritätswarteschlange verwendet wird. Diese Methode ist nebenläufigkeitssicher.

allocator_type get_allocator() const;

Rückgabewert

Eine Kopie des Allocators, der zum Konstruieren des concurrent_priority_queue Objekts verwendet wird.

operator =

Weist den Inhalt eines anderen concurrent_priority_queue-Objekts diesem Objekt zu. Diese Methode ist nicht nebenläufigkeitssicher.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

Parameter

_Src
Das concurrent_priority_queue-Quellobjekt.

Rückgabewert

Ein Verweis auf das concurrent_priority_queue-Objekt.

push

Fügt der Warteschlange für gleichzeitige Priorität ein Element hinzu. Diese Methode ist nebenläufigkeitssicher.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

Parameter

_Elem
Das Element, das der gleichzeitigen Prioritätswarteschlange hinzugefügt werden soll.

size

Gibt die Anzahl der Elemente in der gleichzeitigen Prioritätswarteschlange zurück. Diese Methode ist nebenläufigkeitssicher.

size_type size() const;

Rückgabewert

Die Anzahl der Elemente in diesem concurrent_priority_queue Objekt.

Hinweise

Die zurückgegebene Größe wird garantiert alle Elemente enthalten, die durch Aufrufe der Funktion pushhinzugefügt werden. Es kann jedoch nicht die Ergebnisse von ausstehenden gleichzeitigen Vorgängen widerspiegeln.

swap

Tauscht den Inhalt von zwei gleichzeitigen Prioritätswarteschlangen aus. Diese Methode ist nicht nebenläufigkeitssicher.

void swap(concurrent_priority_queue& _Queue);

Parameter

_Schlange
Das concurrent_priority_queue Objekt, mit dem Inhalte ausgetauscht werden sollen.

try_pop

Entfernt und gibt das Element mit der höchsten Priorität aus der Warteschlange zurück, wenn die Warteschlange nicht leer ist. Diese Methode ist nebenläufigkeitssicher.

bool try_pop(reference _Elem);

Parameter

_Elem
Ein Verweis auf eine Variable, die mit dem Element mit der höchsten Priorität aufgefüllt wird, wenn die Warteschlange nicht leer ist.

Rückgabewert

true wenn ein Wert angezeigt wurde, false andernfalls.

Siehe auch

Concurrency-Namespace
Parallele Container und Objekte