Joar, also ... ähhhhhhmmmmm ... ja
Im Prinzip ist es schon eine Liste, aber mit dem Unterschied einer etwas anderen Verwaltung.
Bei einem Stack/Queue greift man im Allgemeinen erstmal nur auf die Enden des Speichers.
Und er ist vorallem als Zwischenspeicher ausgelegt.
Dieser hier ist jetzt zusätzlich noch threadsicher ausgelegt, was auch noch etwas Arbeit erspart.
Abgesehn davon haben die Generics gegenüber 'ner "einfachen" TList noch ein/zwei Vorteile.
Ich weiß ja nicht, wie oft du mit TList und Co. gearbeitet hast, aber bei der Speicherverwaltung muß man schon etwas aufpassen. (gut, wenn man hier Objekte oder Pointer in den Stack packt, dann ändert sich daran nicht viel)
Man könnte sich z.B. in einem Programm 'ne Aufgabenverteilung überlegen.
Das Hauptprogramm trägt dabei nur die zu erledigenden Aufgaben in den Queue ein
und im Hintergrund warten ein oder gar mehrere Threads darauf, daß Arbeit anliegt
und wenn, dann arbeiten sie langsam die im Stack abgelegten Aufgaben ab.
Delphi-Quellcode:
Type TMyRec = Record
Name: String;
Blubb: Irgendwas;
End;
TMyStack = TGenStack<TMyRec>
Var MyQueue: TMyStack;
MyRec: TMyRec;
// Haupprogramm
MyQueue.Push(MyRec);
// Workerthread
Repeat
If MyQueue.Unshift(MyRec) Then Begin
...
End Else Sleep(100);
Until Terminated;