영어로 읽기

다음을 통해 공유


CQueue 클래스

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

CQueue 클래스 템플릿은 단순하고 정적으로 크기가 조정된 큐를 구현합니다.

Public 메서드 Description
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(디버그 빌드)