SendMessage和PostMessage的异同

简介:
  1. 相同点都是对其他线程或本线程发送送消息

  2. 不同点:

    (1)SendMessage是线程阻塞的,要等到其他线程(特指窗口)响应完消息,并返回值,才能继续执行.PostMessage不阻塞.

    (2)SendMessage的返回值是其他线程处理后返回的值,PostMessage的返回值是true或false,表示函数是否正常执行.

    (3)SendMessage执行时会造成线程切换,直到下一个CPU时间到来时,才能检测返回值并向下执行.所为了提高系统执行效率,可以在另外一个线程中应该立即返回:
    if(InSendMessage)

        RelpyMessage(value);

    PostMessage不阻塞当前线程,立刻返回,继续执行.

    (4)SendMessage消息不进窗口的消息队列,PostMessage会进入消息队列.所以PostMessage的消息会有相对的延迟.具体使用哪个函数,看使用是否关心这种延迟.
















本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1976813  ,如需转载请自行联系原作者











相关文章
|
消息中间件 安全 API
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
SendMessage/PostMessage API 可以实现发送系统消息,这些消息可以定义为常见的鼠标或键盘事件、数据的发送等各种系统操作......
5933 1
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
|
消息中间件 存储 项目管理
handler+message【消息机制】
handler+message【消息机制】
193 0
handler+message【消息机制】
|
JavaScript 前端开发
JavaScript 自己实现 发布订阅 (Publish/Subscribe & EventBus)
JavaScript 自己实现 发布订阅 (Publish/Subscribe & EventBus)
|
消息中间件 存储 缓存
深入理解 Handler 消息机制
深入理解 Handler 消息机制
|
消息中间件 存储 Java
【Android 异步操作】手写 Handler ( Message 消息 | ThreadLocal 线程本地变量 | Looper 中的消息队列 MessageQueue )
【Android 异步操作】手写 Handler ( Message 消息 | ThreadLocal 线程本地变量 | Looper 中的消息队列 MessageQueue )
172 0
|
消息中间件 C++ UED
VC++ SendMessage和PostMessage使用总结
VC++ SendMessage和PostMessage使用总结
519 0
|
C# JavaScript 前端开发

热门文章

最新文章

下一篇
开通oss服务