关于自定义线程之间通过消息传递结构体变量的问题 多线程自定义消息消息传递结构体传递 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我在主线程中通过消息传递结构体变量,但是在Normal线程中无法获取消息;::PostThreadMessage(ThreadID_Normal,MAINTONORMAL_MSG,(WPARAM) &MainData,0);单步调试无法获取结果,烦请高手给予指点 为什么你已经PeekMessage到了msg,你直接处理就可以了,还要再GetMessage?你能得到消息吗? PeekMessage(&Mmsg,0,0,0,PM_REMOVE) 能的。但是有时候却没办法得到消息,需要连续发送几次,目的线程才能得到;你说的是一种情况,由于CPU时间片跳转的无序性,目的线程无法获知自己什么时候会提前得到消息,或者延迟得到消息,所以才会有后续的组成队列。 PEEKMessage只是确认队列中有无消息,如果有的话,还需要取出来消息,然后进行执行。因为消息不是直接在不同线程的消息队列中传递的,而是所有线程的消息都会发送到Windowsde的消息队列,然后各线程将属于自己的消息拿回到自己的消息队列中等待着自己线程的读取和使用。原理好像是这样的~~~~ 线程消息是会丢的,正确做法是自己做消息队列WaitEvent;{lock(incoming_queue_lock_);incoming_queue_.Swap(&work_queue_);}do_work(); 请教一下MFC下的控件问题(内有功能描述,咨询控件选择) 如何在对话框中显示word文档?急!急!急!急! 在网格中点击交叉点时,怎样实现"最近捕捉"? 在ole拖放中如何实现下面功能,请高手指教! 关于Shell_NotifyIcon 菜鸟问VC6中调用.dll及调用api 请问大家那里有mfc编程实例的原码下载,高分相送 windows 的 <拨号> 如何在程序中调用 没有分了,请问如何把一个HWND传递给ACTIVEX? BHO的打包发布,以及依赖项的问题,高分求助 VC 6.0 使用 ADO ,异常报错。请拯救~ 多线程 接收消息失败
::PostThreadMessage(ThreadID_Normal,MAINTONORMAL_MSG,(WPARAM) &MainData,0);
单步调试无法获取结果,烦请高手给予指点
为什么你已经PeekMessage到了msg,你直接处理就可以了,还要再GetMessage?你能得到消息吗?
你说的是一种情况,由于CPU时间片跳转的无序性,目的线程无法获知自己什么时候会提前得到消息,或者延迟得到消息,所以才会有后续的组成队列。
PEEKMessage只是确认队列中有无消息,如果有的话,还需要取出来消息,然后进行执行。因为消息不是直接在不同线程的消息队列中传递的,而是所有线程的消息都会发送到Windowsde的消息队列,然后各线程将属于自己的消息拿回到自己的消息队列中等待着自己线程的读取和使用。原理好像是这样的~~~~
WaitEvent;
{
lock(incoming_queue_lock_);
incoming_queue_.Swap(&work_queue_);
}
do_work();