b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

postmessage 传递参数_postmessage 刷新_postmessage

电脑杂谈  发布时间:2017-01-24 10:12:13  来源:网络整理

1.PostMessage发出的消息将被存放于消息队列,会等待线程空闲时执行而不会立即执行.

2.对于单线程的Windows程序,将会等待PostMessage所在函数体下面的函数执行完成并返回进入消息处理循环时方会被执行(除非你下面函数体内有自己获取消息队列并处理的循环).此种情况下,PostMessage发出的消息不会快于你同一函数体内的其它处理的

3.对于多线程情况,做好互锁是最好的解决方法

Windows提供的PostMessage和SendMessage这两个API,主要就是提过一个机会让程序员完成自己的操作,它们都是将消息放消息队列中,只是这两个API放置的位置不同。有的消息如果没有来的及处理,下一个同样的消息将被忽略,如WM_PAINT。所以:

1、不一定是空闲时间,只是消息处理队列的尾部,按优先级和顺序执行。

2、可以直接调用函数,很多消息都可以直接使用调用函数的方法实现,如果你需要它立即执行

3、对于多线程,同样的消息如果参数不一样,Windows也不会将其丢弃

但是发送消息设计到Windows底层,所以有时候资源无法获得,系统资源比较紧张的时候,消息可能被丢弃,因为每个消息都有生存期,超过一定的时间没有被放到消息队列中就会被丢弃!

PostMessage是把消息放到消息队列中,然后就不管了,因而发送消息后的函数执行有可能比消息函数执行快,或慢,可以用SendMessage来实现阻塞的消息

如果你使用一个局部变量作为消息参数

例如

TCHARszText[20]=_T(”标题“);

::SendMessage(hWnd,WM_SETTEXT,(WPARAM)szText,lParam);

可以成功,但如果是PostMessage可能会访存错误

就正如你所知道的一样,PostMessage更快,消息队列可能会填满,不过可以使用多个线程的同步来处理

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

谁能讲讲PostMessage的工作原理喃?

我只是想知道队列中可放多少?

超出了后系统怎么处理的?

有啥子需要注意的?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Windows2000/XP:Thereisalimitof10,000postedmessagespermessagequeue.Thislimitshouldbesufficientlylarge.Ifyourapplicationexceedsthelimit,itshouldberedesignedtoavoidconsumingsomanysystemresources.Toadjustthislimit,modifythefollowingregistrykey:HKEY_LOCAL_MACHINE

SOFTWARE

Microsoft

WindowsNT

CurrentVersion

Windows

USERPostMessageLimitTheminimumacceptablevalueis4000.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

长时间这样下去,消息队列会不会塞满,然后Windows咋个处理?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-------------------------


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28476-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...