Udostępnij za pośrednictwem


concurrent_priority_queue — Klasa

Klasa concurrent_priority_queue jest kontenerem, który umożliwia jednoczesne wypychanie wielu wątków i wypychanie elementów podręcznych. Elementy są zwinięte w kolejności priorytetu, w której priorytet jest określany przez functor dostarczony jako argument szablonu.

Składnia

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

Parametry

T
Typ danych elementów, które mają być przechowywane w kolejce priorytetów.

_Porównać
Typ obiektu funkcji, który może porównać dwie wartości elementu jako klucze sortowania, aby określić ich względną kolejność w kolejce priorytetu. Ten argument jest opcjonalny, a predykat less<T> binarny jest wartością domyślną.

_Ax
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji i cofania przydziału pamięci dla kolejki priorytetu współbieżnego. Ten argument jest opcjonalny, a wartość domyślna to allocator<T>.

Członkowie

Definicje typów publicznych

Nazwa/nazwisko opis
allocator_type Typ reprezentujący klasę alokatora dla kolejki priorytetu współbieżnego.
const_reference Typ reprezentujący odwołanie const do elementu typu przechowywanego w kolejce priorytetu współbieżnego.
reference Typ reprezentujący odwołanie do elementu typu przechowywanego w kolejce priorytetu współbieżnego.
size_type Typ, który zlicza elementy w kolejce priorytetu współbieżnego.
value_type Typ reprezentujący typ danych przechowywany w kolejce priorytetu współbieżnego.

Konstruktory publiczne

Nazwa/nazwisko opis
concurrent_priority_queue Przeciążone. Tworzy kolejkę priorytetu współbieżnego.

Metody publiczne

Nazwa/nazwisko opis
Wyczyść Usuwa wszystkie elementy z priorytetu współbieżnego. Ta metoda nie jest bezpieczna współbieżności.
empty Sprawdza, czy kolejka priorytetu współbieżnego jest pusta w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności.
Get_allocator Zwraca kopię alokatora używanego do konstruowania kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
push Przeciążone. Dodaje element do kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
Rozmiar Zwraca liczbę elementów w kolejce priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
Wymiany Zamienia zawartość dwóch współbieżnych kolejek priorytetowych. Ta metoda nie jest bezpieczna współbieżności.
try_pop Usuwa i zwraca element o najwyższym priorytcie z kolejki, jeśli kolejka nie jest pusta. Ta metoda jest bezpieczna współbieżności.

Operatory publiczne

Nazwa/nazwisko opis
operator = Przeciążone. Przypisuje zawartość innego concurrent_priority_queue obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

Uwagi

Aby uzyskać szczegółowe informacje na concurrent_priority_queue temat klasy, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).

Hierarchia dziedziczenia

concurrent_priority_queue

Wymagania

Nagłówek: concurrent_priority_queue.h

Przestrzeń nazw: współbieżność

Wyczyść

Usuwa wszystkie elementy z priorytetu współbieżnego. Ta metoda nie jest bezpieczna współbieżności.

void clear();

Uwagi

clear nie jest bezpieczny dla współbieżności. Należy upewnić się, że podczas wywoływania tej metody nie są wywoływane żadne inne wątki w kolejce priorytetu współbieżnego. clear nie zwalnia pamięci.

concurrent_priority_queue

Tworzy kolejkę priorytetu współbieżnego.

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

Parametry

_InputIterator
Typ iteratora wejściowego.

_Al
Klasa alokatora do wykorzystania z tym obiektem.

_Init_capacity
Początkowa pojemność concurrent_priority_queue obiektu.

_Rozpocząć
Położenie pierwszego elementu w zakresie elementów do skopiowania.

_Końcu
Położenie pierwszego elementu poza zakresem elementów do skopiowania.

_Src
Obiekt źródłowy concurrent_priority_queue do kopiowania lub przenoszenia elementów.

Uwagi

Wszystkie konstruktory przechowują obiekt _Al alokatora i inicjują kolejkę priorytetu.

Pierwszy konstruktor określa pustą kolejkę priorytetu początkowego i opcjonalnie określa alokator.

Drugi konstruktor określa kolejkę priorytetu z początkową pojemnością _Init_capacity i opcjonalnie określa alokator.

Trzeci konstruktor określa wartości dostarczone przez zakres iteratora [ _Begin, _End) i opcjonalnie określa alokator.

Czwarte i piąte konstruktory określają kopię kolejki _Srcpriorytetu .

Szóste i siódme konstruktory określają ruch kolejki _Srcpriorytetu .

empty

Sprawdza, czy kolejka priorytetu współbieżnego jest pusta w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności.

bool empty() const;

Wartość zwracana

true jeśli kolejka priorytetu była pusta w momencie wywołania funkcji, false w przeciwnym razie.

Get_allocator

Zwraca kopię alokatora używanego do konstruowania kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.

allocator_type get_allocator() const;

Wartość zwracana

Kopia alokatora używanego do konstruowania concurrent_priority_queue obiektu.

operator =

Przypisuje zawartość innego concurrent_priority_queue obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

Parametry

_Src
Obiekt źródłowy concurrent_priority_queue .

Wartość zwracana

Odwołanie do tego concurrent_priority_queue obiektu.

push

Dodaje element do kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

Parametry

_Elem
Element, który ma zostać dodany do kolejki priorytetu współbieżnego.

size

Zwraca liczbę elementów w kolejce priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.

size_type size() const;

Wartość zwracana

Liczba elementów w tym concurrent_priority_queue obiekcie.

Uwagi

Zwrócony rozmiar jest gwarantowany, aby uwzględnić wszystkie elementy dodane przez wywołania do funkcji push. Jednak może nie odzwierciedlać wyników oczekujących operacji współbieżnych.

swap

Zamienia zawartość dwóch współbieżnych kolejek priorytetowych. Ta metoda nie jest bezpieczna współbieżności.

void swap(concurrent_priority_queue& _Queue);

Parametry

_Kolejki
Obiekt concurrent_priority_queue do zamiany zawartości na.

try_pop

Usuwa i zwraca element o najwyższym priorytcie z kolejki, jeśli kolejka nie jest pusta. Ta metoda jest bezpieczna współbieżności.

bool try_pop(reference _Elem);

Parametry

_Elem
Odwołanie do zmiennej, która zostanie wypełniona elementem o najwyższym priorytcie, jeśli kolejka nie jest pusta.

Wartość zwracana

true jeśli wartość została wyskoczona, false w przeciwnym razie.

Zobacz też

Przestrzeń nazw współbieżności
Równoległe kontenery oraz obiekty