CQueue-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die CQueue-Klassenvorlage implementiert eine einfache, statisch dimensionierte Warteschlange.

Öffentliche Methoden Beschreibung
CQueue Konstruktormethode.
~CQueue Destruktormethode.
GetQueueObject Ruft das nächste Element aus der Warteschlange ab.
PutQueueObject Fügt ein Element in die Warteschlange ein.

Bemerkungen

Der Klassenkonstruktor gibt die Größe der Warteschlange an. Verwenden Sie das CQueue::P utQueueObject , um ein Element in der Warteschlange zu platzieren, und die CQueue::GetQueueObject-Methode , um ein Element aus der Warteschlange zu entfernen. Wenn die Warteschlange voll ist, blockiert die PutQueueObject-Methode , bis ein Element aus der Warteschlange entfernt wird. Wenn die Warteschlange leer ist, blockiert getQueueObject , bis ein Element in die Warteschlange eingereiht wird. Der Vorlagenparameter gibt den Typ des Elements an. Beispiel:

CQueue<int> number_queue;
number_queue.PutQueueObject(7);

Die -Klasse verwendet zwei Semaphore, um Warteschlangenvorgänge zu steuern, ein "get"-Semaphor und ein "put"-Semaphor. Die GetQueueObject-Methode wartet auf den "get"-Semaphor (mit der WaitForSingleObject-Funktion ) und gibt den Put-Semaphor (mithilfe der ReleaseSemaphor-Funktion ) frei. Die PutQueueObject-Methode wartet auf den "put"-Semaphor und gibt den "get"-Semaphor frei. Die -Klasse verwendet einen kritischen Abschnitt, um Warteschlangenvorgänge zwischen mehreren Threads zu serialisieren.

Anforderungen

Anforderung Wert
Header
Wxutil.h (Streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)