5秒内从向中发送6万条消息,为什么消息会丢呢?
我要在5秒内从dll向exe中的工作线程通过调用PostaThreadMessage发送6万条消息,这些消息是一条一条发送出去的。现在可以确定的是,dll确实把6万条消息都发送出去了,但是工作线程只接收到1万条左右,其余的都丢了。我的线程函数如下:
UINT RecvMess(..)
{
MSG msg;
while(1)
{
if(PeekMessage(&msg,PM_REMOVE))
{
switch(msg.message)
{
...
}
}
else
{
...
sleep(100);
}
}
return 0;
}
我的线程函数一直在运行,并没退出,但当接收万1万多条后,调试时程序就再也进入不了if里了,显然,消息队列里已经没有消息了,那些还没接收到的消息都丢了。我的问题是:
1 为什么消息会丢呢?
2 5秒内对方给我发6万条消息过来,我如何才能全部接收到,而不丢失。
提示:我用了GetMessage还是会丢。必须在线程函数里接收消息,不允许对方调用SendMessage(),而我在主线程中接收。