CMsgThread 类

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

CMsgThread 是一个工作线程类,用于将请求排队到队列线程以异步方式完成。 若要使用此类,请从中派生类并重写 CMsgThread::ThreadMessageProc 成员函数。 ThreadMessageProc 成员函数执行每个请求。 客户端函数和 ThreadMessageProc 成员函数必须共享 CMsg 对象中参数的通用定义。

协商机制告知工作线程退出。 通常,这是 CMsg 类的 uMsg 消息代码的一个值。

最好从派生类的析构函数发送此消息,并在完成派生类的销毁之前调用 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 处理请求。 这是一个纯虚拟成员函数。