CMsgThread 클래스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
클래스는 CMsgThread
비동기적으로 완료를 위해 큐 스레드에 요청을 큐에 대기하는 작업자 스레드 클래스입니다. 이 클래스를 사용하려면 클래스를 파생시키고 CMsgThread::ThreadMessageProc 멤버 함수를 재정의합니다.
ThreadMessageProc 멤버 함수는 각 요청을 수행합니다. 클라이언트 함수와 ThreadMessageProc 멤버 함수는 CMsg 개체의 매개 변수에 대한 일반적인 정의를 공유해야 합니다.
협상된 메커니즘은 작업자 스레드에 종료를 지시합니다. 일반적으로 CMsg 클래스의 uMsg 메시지 코드 값 중 하나입니다.
파생 클래스의 소멸자에서 이 메시지를 보내고 파생 클래스의 소멸을 완료하기 전에 CMsgThread::WaitForThreadExit 멤버 함수를 호출하는 것이 좋습니다.
보호된 데이터 멤버 | Description |
---|---|
m_hSem | 신호에 사용되는 핸들을 나타냅니다. |
m_Lock | 목록에 대한 액세스를 보호합니다. |
m_lWaiting | 자유 스레드 대기 중임을 나타냅니다. |
m_ThreadQueue | CMsgThread::GetThreadMsg 멤버 함수를 재정의하고 이 큐 이외의 항목을 차단합니다. |
멤버 함수 | Description |
CMsgThread | CMsgThread 개체를 생성합니다. |
CreateThread | 스레드를 만듭니다. |
GetThreadHandle | 스레드 핸들을 검색합니다. |
GetThreadID | 스레드의 식별자를 검색합니다. |
GetThreadPriority | 현재 스레드 우선 순위를 검색합니다. |
PutThreadMsg | 작업자 스레드의 실행 요청을 큐에 대기합니다. |
ResumeThread | 작업자 스레드의 작업을 계속합니다. |
SetThreadPriority | 스레드의 우선 순위를 새 값으로 설정합니다. |
SuspendThread | 실행 중인 스레드의 작업을 일시 중단합니다. |
WaitForThreadExit | CMsgThread::SuspendThread 멤버 함수를 호출한 후 스레드가 종료될 때까지 차단합니다. |
재정의 가능한 멤버 함수 | Description |
GetThreadMsg | 요청을 포함하는 큐에 대기 중인 CMsg 개체를 검색합니다. |
OnThreadInit | 스레드에서 초기화를 제공합니다. |
ThreadMessageProc | 요청을 처리합니다. 순수 가상 멤버 함수입니다. |