Eine Queue-Klasse.
Mehr ...
Dies ist eine Klasse zum "parken" von Objekten in einer Queue. Sie arbeitet nach dem FiFo-Prinzip (First In, First Out), das heißt was zuerst hineingegeben wurde, kommt auch zuerst wieder hinaus.
Die Anzahl Objekte in der Queue kann man durch Aufruf von CQueue::SetMaximum limitieren.
- Seit
- Diese Klasse wurde mit Version 6.2.6 eingeführt und in 6.3.0 überarbeitet und dokumentiert.
Der Konstruktor initialisiert die Liste und setzt den Counter auf 0. Die Anzahl Objekte ist unlimitiert.
ppl6::CQueue::CQueue |
( |
int |
max | ) |
|
Der Konstruktor initialisiert die Liste und setzt den Counter auf 0. Die maximale Anzahl Objekte wird auf den angegebenen Wert max
gesetzt.
- Parameter
-
[in] | max | Limit für die Anzahl Objekte in der Queue |
ppl6::CQueue::~CQueue |
( |
| ) |
|
Der Destruktor ruft die Clear-Funktion der Klasse auf, womit die Queue gelöscht wird. Dabei muß berücksichtigt werden, dass nur die Queue selbst gelöscht wird, nicht aber die darin eventuell noch vorhandenen Objekte. Dies ist nicht möglich, da die Queue den Typ der Objekte nicht kennt und so deren Speicher nicht freigeben kann.
int ppl6::CQueue::Add |
( |
const void * |
item | ) |
|
Mit diesem Befehl wird der Zeiger auf ein beliebiges Objekt in der Queue abgelegt.
- Parameter
-
[in] | item | Pointer auf das Objekt oder den Speicherbereich, der in die Queue gelegt werden soll. |
- Rückgabe
- Bei Erfolg liefert die Funktion 1 zurück, sonst 0. Ein Fehler kann auftreten, wenn ein Limit auf die Anzahl Objekte angegeben wurde und dieses erreicht ist, oder wenn kein Speicher mehr zur Verfügung steht. Auch darf
item
nicht NULL sein.
void ppl6::CQueue::Clear |
( |
| ) |
|
Mit diesem Befehl wird die Queue gelöscht. Dabei muß berücksichtigt werden, dass nur die Queue selbst gelöscht wird, nicht aber die darin eventuell noch vorhandenen Objekte. Dies ist nicht möglich, da die Queue den Typ der Objekte nicht kennt und so deren Speicher nicht freigeben kann.
Vor Aufruf der Funktion sollten daher alle verbliebenen Objekte von der Anwendung mit CQueue::Get entfernt und ordnungsgemäß gelöscht werden.
int ppl6::CQueue::Count |
( |
| ) |
|
Dieser Befehl liefert die Anzahl Elemente zurück, die sich aktuell in der Queue befinden.
- Rückgabe
- Anzahl Elemente in der Queue
const void * ppl6::CQueue::Get |
( |
| ) |
|
Mit diesem Befehl wird ein Objekt aus der Queue entfernt und dessen Pointer zurückgegeben.
- Rückgabe
- Pointer auf das älteste Objekt aus der Queue oder NULL, wenn die Queue leer ist.
int ppl6::CQueue::Put |
( |
const void * |
item | ) |
|
Mit diesem Befehl wird der Zeiger auf ein beliebiges Objekt in der Queue abgelegt.
- Parameter
-
[in] | item | Pointer auf das Objekt oder den Speicherbereich, der in die Queue gelegt werden soll. |
- Rückgabe
- Bei Erfolg liefert die Funktion 1 zurück, sonst 0. Ein Fehler kann auftreten, wenn ein Limit auf die Anzahl Objekte angegeben wurde und dieses erreicht ist, oder wenn kein Speicher mehr zur Verfügung steht. Auch darf
item
nicht NULL sein.
void ppl6::CQueue::SetMaximum |
( |
int |
max | ) |
|
Mit diesem Befehl wird die maximale Anzahl Objekte in der Queue auf den angegebenen Wert max
begrenzt. Dies ist allerdings nur möglich, wenn die Liste noch leer ist oder weniger Elemente als max
enthält.
- Parameter
-
[in] | max | Maximale Anzahl Objekte. Die Angabe von 0 hebt das Limit auf. |
void ppl6::CQueue::UseMutex |
( |
bool |
flag | ) |
|
Wird diese Funktion mit true
aufgerufen, wird bei jeder Operation mit Put, Add oder Get ein Mutex gesetzt, womit die Klasse Threadsicher wird. Defaultmäßig wird kein Mutex verwendet, wodurch die Klasse etwas schneller ist. Die Anwendung muss dann selbst sicherstellen, dass nicht mehrere Threads parallel zugreifen.
- Parameter
-
[in] | flag | Mutex ein oder ausschalten (true/false) |
void* ppl6::CQueue::first |
|
private |
void * ppl6::CQueue::last |
|
private |
bool ppl6::CQueue::usemutex |
|
private |
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- /jenkins/jobs/clang_ppl6/workspace/include/ppl6.h
- /jenkins/jobs/clang_ppl6/workspace/src/core/CQueue.cpp