Поделиться через


Класс CQueue

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Шаблон класса CQueue реализует простую очередь статического размера.

Открытые методы Описание
CQueue Метод конструктора.
~CQueue Метод деструктора.
GetQueueObject Извлекает следующий элемент из очереди.
PutQueueObject Помещает элемент в очередь.

Комментарии

Конструктор класса задает размер очереди. Используйте CQueue::P utQueueObject , чтобы поместить элемент в очередь, и метод CQueue::GetQueueObject , чтобы вывести элемент из очереди. Если очередь заполнена, метод PutQueueObject блокируется до тех пор, пока элемент не будет выведен из очереди. Если очередь пуста, GetQueueObject блокируется до тех пор, пока элемент не будет помещен в очередь. Параметр шаблона указывает тип элемента. Пример:

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

Класс использует два семафора для управления операциями очередей: семафор get и семафор put. Метод GetQueueObject ожидает семафора get (с помощью функции WaitForSingleObject ) и освобождает семафор put (с помощью функции ReleaseSemaphore ). Метод PutQueueObject ожидает семафора put и освобождает семафор get. Класс использует критически важный раздел для сериализации операций очередей между несколькими потоками.

Требования

Требование Значение
Заголовок
Wxutil.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)