一个服务器程序,由一个主线程下面开了很多个子线程服务于上面的子线程。
请问:
假设子线程捕捉到了一个消息,并且需要把这个消息发送给主线程马上进行处理,子线程如何发送这个消息给主线程,主线程又如何控制、监视子线程发送过来的消息并进行处理呢?// 主程序
void main()
{
DWORD thread_ID;
_thread_handle = ::CreateThread( NULL, 0,
resource_asker::threadproc, this, 0, &thread_ID );
// 如果单纯这么的建立线程,那么建立以后就可能和子线程失去了联系了,
// 主线程无法知道下面的子线程的状态并加以控制
}// 子线程
DWORD WINAPI task::threadproc(LPVOID lpParameter)
{
SomethingHappened(...);
return 0;
}
请问:
假设子线程捕捉到了一个消息,并且需要把这个消息发送给主线程马上进行处理,子线程如何发送这个消息给主线程,主线程又如何控制、监视子线程发送过来的消息并进行处理呢?// 主程序
void main()
{
DWORD thread_ID;
_thread_handle = ::CreateThread( NULL, 0,
resource_asker::threadproc, this, 0, &thread_ID );
// 如果单纯这么的建立线程,那么建立以后就可能和子线程失去了联系了,
// 主线程无法知道下面的子线程的状态并加以控制
}// 子线程
DWORD WINAPI task::threadproc(LPVOID lpParameter)
{
SomethingHappened(...);
return 0;
}
解决方案 »
- 能否用作业控制来限制某个进程/线程的cpu使用率?
- 关于PropertyPage字体设置问题
- 关于单文档与对话框的问题
- 如何重定位一个SDK函数?
- 这个是enum的什么用法?
- 为MFC规则DLL中生成一个ADO的数据连接。为什么会有如下问题??谢谢大家
- 誰能介绍几个比较好的关于VC编程的英文网址。
- 多线程中使用PostThreadMessage
- vc中怎么把窗口中的内容保存到一个CBitmap对象中?
- Socket编程如何显示对方输入过程
- 资源DLL中的HTML
- Debug的时候出现的HEAP[ImageProcess.exe]: Invalid Address specified to RtlFreeHeap( 900000, 931080 ),这是什么错误啊?
-------------------
根据我上面的示例代码,可以说详细点吗?
::PostMessage((HWND)hwnd->m_hwnd,WM_YOUMESSAGE,NULL);
通知主函数,消息最好为自定义消息#define WM_YOUMESSAGE 3001;
然后加入到Message map 消息循环中
或者用WaitForSingle(Multi)Object结合Event来处理(多看看有关同步对象的资料)