Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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.