CMsgThread クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
クラスは CMsgThread
ワーカー スレッド クラスです。このクラスは、キュースレッドに対する要求をキューに入れます。これは、完了を非同期的に行います。 このクラスを使用するには、そのクラスからクラスを派生させ、 CMsgThread::ThreadMessageProc メンバー関数をオーバーライドします。
ThreadMessageProc メンバー関数は、各要求を実行します。 クライアント関数と ThreadMessageProc メンバー関数は、 CMsg オブジェクトのパラメーターの共通定義を共有する必要があります。
ネゴシエートされたメカニズムは、ワーカー スレッドに終了を指示します。 通常、これは CMsg クラスの uMsg メッセージ コードの 1 つの値になります。
派生クラスのデストラクターからこのメッセージを送信し、派生クラスの破棄を完了する前に CMsgThread::WaitForThreadExit メンバー関数を呼び出することをお勧めします。
プロテクト データ メンバー | 説明 |
---|---|
m_hSem | シグナリングに使用されるハンドルを示します。 |
m_Lock | リストへのアクセスを保護します。 |
m_lWaiting | 空きスレッドの待機を示します。 |
m_ThreadQueue | CMsgThread::GetThreadMsg メンバー関数をオーバーライドし、このキュー以外の項目をブロックします。 |
メンバー関数 | 説明 |
CMsgThread | CMsgThread オブジェクトを構築します。 |
CreateThread | スレッドを作成します。 |
GetThreadHandle | スレッド ハンドルを取得します。 |
GetThreadID | スレッドの識別子を取得します。 |
GetThreadPriority | 現在のスレッドの優先度を取得します。 |
PutThreadMsg | ワーカー スレッドによる実行要求をキューに入れます。 |
ResumeThread | ワーカー スレッドの操作を続行します。 |
SetThreadPriority | スレッドの優先度を新しい値に設定します。 |
SuspendThread | 実行中のスレッドの操作を中断します。 |
WaitForThreadExit | CMsgThread::SuspendThread メンバー関数の呼び出し後にスレッドが終了するまでブロックします。 |
オーバーライド可能なメンバー関数 | 説明 |
GetThreadMsg | 要求を含むキューに登録された CMsg オブジェクトを取得します。 |
OnThreadInit | スレッドでの初期化を提供します。 |
ThreadMessageProc | 要求を処理します。 これは純粋な仮想メンバー関数です。 |