CMsgThread 类
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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 | 处理请求。 这是一个纯虚拟成员函数。 |