Share via


concurrent_queue-klasse

De concurrent_queue klasse is een reekscontainerklasse die first-in, first-out-toegang tot de elementen toestaat. Het maakt een beperkte set gelijktijdigheidsveilige bewerkingen mogelijk, zoals push en try_pop. Hier zijn gelijktijdigheidsveilige aanwijzers of iterators altijd geldig. Het biedt geen garantie voor het initialiseren van elementen of voor een specifieke traverseringsvolgorde.

Syntaxis

template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;

Parameterwaarden

T
Het gegevenstype van de elementen die in de wachtrij moeten worden opgeslagen.

_Ax
Het type dat het opgeslagen allocatorobject vertegenwoordigt, dat details bevat over de toewijzing en vrijgave van het geheugen voor deze gelijktijdige wachtrij. Dit argument is optioneel en de standaardwaarde is allocator<T>.

Leden

Openbare typedefs

Naam Description
allocator_type Een type dat de allocatorklasse vertegenwoordigt voor een concurrerende wachtrij.
const_iterator Een type dat een niet-threadveilige const iterator vertegenwoordigt voor elementen in een gelijktijdige wachtrij.
const_reference Een type dat een verwijzing biedt naar een const element dat is opgeslagen in een gelijktijdige wachtrij voor het lezen en uitvoeren van bewerkingen const .
difference_type Een type dat de ondertekende afstand tussen twee elementen in een gelijktijdige wachtrij biedt.
iterator Een type dat een niet-threadveilige iterator vertegenwoordigt over de elementen in een gelijktijdige wachtrij.
reference Een type dat een verwijzing biedt naar een element dat is opgeslagen in een gelijktijdige wachtrij.
size_type Een type dat het aantal elementen in een gelijktijdige wachtrij telt.
value_type Een type dat het gegevenstype vertegenwoordigt dat is opgeslagen in een gelijktijdige wachtrij.

Openbare constructors

Naam Description
concurrent_queue Overbelast. Construeert een concurrerende wachtrij.
~concurrent_queue destructor Vernietigt de gelijktijdige wachtrij.

Openbare methoden

Naam Description
wissen De gelijktijdige wachtrij wordt gewist, waarbij alle momenteel ingevoegde elementen worden vernietigd. Deze methode is niet gelijktijdigheidsveilig.
empty Test of de gelijktijdige wachtrij leeg is op het moment dat deze methode wordt aangeroepen. Deze methode is gelijktijdigheidsveilig.
get_allocator Retourneert een kopie van de allocator die wordt gebruikt om de gelijktijdige wachtrij samen te stellen. Deze methode is gelijktijdigheidsveilig.
pushen Overbelast. Hiermee wordt een item aan het einde van de gelijktijdige wachtrij geplaatst. Deze methode is gelijktijdigheidsveilig.
try_pop Een item uit de wachtrij verwijderen als deze beschikbaar is. Deze methode is gelijktijdigheidsveilig.
unsafe_begin Overbelast. Een iterator van het type iterator of const_iterator naar het begin van de gelijktijdige wachtrij wordt geretourneerd. Deze methode is niet gelijktijdigheidsveilig.
onveilig_einde Overbelast. Retourneert een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige wachtrij. Deze methode is niet gelijktijdigheidsveilig.
unsafe_size Retourneert het aantal items in de wachtrij. Deze methode is niet gelijktijdigheidsveilig.

Opmerkingen

Zie Parallelle containers en objecten voor meer informatie.

Overnamehiƫrarchie

concurrent_queue

Requirements

Koptekst: concurrent_queue.h

Naamruimte: concurrentie

duidelijk

De gelijktijdige wachtrij wordt gewist, waarbij alle momenteel ingevoegde elementen worden vernietigd. Deze methode is niet gelijktijdigheidsveilig.

void clear();

concurrent_queue

Construeert een concurrerende wachtrij.

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

Parameterwaarden

_InputIterator
Het type invoer-iterator dat een bereik met waarden aangeeft.

_Al
De allocatorklasse die met dit object moet worden gebruikt.

_OtherQ
Het bronobject concurrent_queue waarvan elementen worden gekopieerd of verplaatst.

_Beginnen
Positie van het eerste element in het bereik van elementen dat moet worden gekopieerd.

_Einde
Positie van het eerste element buiten het bereik van elementen dat moet worden gekopieerd.

Opmerkingen

Alle constructors slaan een allocatorobject _Al op en initialiseren de wachtrij.

De eerste constructor geeft een lege initiƫle wachtrij op en specificeert expliciet het type allocator dat moet worden gebruikt.

De tweede constructor geeft een kopie van de gelijktijdige wachtrij _OtherQop.

De derde constructor geeft een verplaatsing van de gelijktijdige wachtrij _OtherQop.

De vierde constructor specificeert waarden die worden opgegeven door het iteratorbereik [ _Begin, _End).

~concurrent_queue

Vernietigt de gelijktijdige wachtrij.

~concurrent_queue();

empty

Test of de gelijktijdige wachtrij leeg is op het moment dat deze methode wordt aangeroepen. Deze methode is gelijktijdigheidsveilig.

bool empty() const;

Retourwaarde

true als de gelijktijdige wachtrij leeg was op het moment dat we hebben gekeken, false anders.

Opmerkingen

Hoewel deze methode gelijktijdigheidsveilig is met betrekking tot aanroepen naar de methoden push, try_popen emptyde geretourneerde waarde kan onjuist zijn op het moment dat deze wordt gecontroleerd door de aanroepende thread.

get_allocator

Retourneert een kopie van de allocator die wordt gebruikt om de gelijktijdige wachtrij samen te stellen. Deze methode is gelijktijdigheidsveilig.

allocator_type get_allocator() const;

Retourwaarde

Een kopie van de allocator die wordt gebruikt om de gelijktijdige wachtrij samen te stellen.

duwen

Hiermee wordt een item aan het einde van de gelijktijdige wachtrij geplaatst. Deze methode is gelijktijdigheidsveilig.

void push(const T& _Src);

void push(T&& _Src);

Parameterwaarden

_Src
Het item dat moet worden toegevoegd aan de wachtrij.

Opmerkingen

push is gelijktijdigheidsveilig met betrekking tot aanroepen naar de methoden push, try_popen empty.

try_pop

Een item uit de wachtrij verwijderen als deze beschikbaar is. Deze methode is gelijktijdigheidsveilig.

bool try_pop(T& _Dest);

Parameterwaarden

_Dest
Een verwijzing naar een locatie voor het opslaan van het uit de wachtrij verwijderde item.

Retourwaarde

true als een item met succes uit de wachtrij is gehaald, false anders.

Opmerkingen

Als een item succesvol uit de wachtrij is verwijderd, ontvangt de parameter _Dest de verwijderde waarde, wordt de oorspronkelijke waarde in de wachtrij vernietigd en retourneert deze functie true. Als er geen item in de wachtrij staat, retourneert false deze functie zonder blokkering en is de inhoud van de _Dest parameter niet gedefinieerd.

try_pop is gelijktijdigheidsveilig met betrekking tot aanroepen naar de methoden push, try_popen empty.

unsafe_begin

Een iterator van het type iterator of const_iterator naar het begin van de gelijktijdige wachtrij wordt geretourneerd. Deze methode is niet gelijktijdigheidsveilig.

iterator unsafe_begin();

const_iterator unsafe_begin() const;

Retourwaarde

Een iterator van het type iterator of const_iterator aan het begin van het gelijktijdige wachtrijobject.

Opmerkingen

De iterators voor de concurrent_queue klasse zijn voornamelijk bedoeld voor foutopsporing, omdat ze traag zijn en iteratie niet gelijktijdigheidsveilig is ten opzichte van andere wachtrijbewerkingen.

unsafe_end

Retourneert een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige wachtrij. Deze methode is niet gelijktijdigheidsveilig.

iterator unsafe_end();

const_iterator unsafe_end() const;

Retourwaarde

Een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige wachtrij.

Opmerkingen

De iterators voor de concurrent_queue klasse zijn voornamelijk bedoeld voor foutopsporing, omdat ze traag zijn en iteratie niet gelijktijdigheidsveilig is ten opzichte van andere wachtrijbewerkingen.

unsafe_size

Retourneert het aantal items in de wachtrij. Deze methode is niet gelijktijdigheidsveilig.

size_type unsafe_size() const;

Retourwaarde

De grootte van de gelijktijdige wachtrij.

Opmerkingen

unsafe_size is niet gelijktijdigheidsveilig en kan onjuiste resultaten produceren als deze gelijktijdig worden aangeroepen met aanroepen naar de methoden push, try_popen empty.

Zie ook

concurrentie Namespace