Windows同步消息和异步消息的使用
2012-08-06 21:46
141 查看
在Windows中,使用SendMessage来发送同步消息,使用PostMessage来发送异步消息。二者的区别在于:SendMessage将消息发给一个窗口,等窗口程序处理完成后才返回;PostMessage则是将消息发到线程的消息队列中,立即返回,不需要等窗口程序处理完成后再返回。SendMessage由于要等到消息被处理后才会返回,所以能保证消息能立即被处理,但可能导致调用函数的“堵塞”;PostMessage由于是将消息放到消息队列中,不能保证消息被立即处理,好处是会立即返回,不会造成函数的拥塞。
一般在回调函数中要使用PostMessage,以保证回调函数的即时执行,从而使回调函数提供者的代码执行不被拥塞。再就是在有的代码中,我们调用系统api实现预定的功能,但api函数内部使用的是,而后续操作需要在api函数起效果后在执行,即要保证消息按先后线性顺序被处理,所以后续操作需要使用PostMessage来处理,以最终实现我们所需要的功能。
一般在回调函数中要使用PostMessage,以保证回调函数的即时执行,从而使回调函数提供者的代码执行不被拥塞。再就是在有的代码中,我们调用系统api实现预定的功能,但api函数内部使用的是,而后续操作需要在api函数起效果后在执行,即要保证消息按先后线性顺序被处理,所以后续操作需要使用PostMessage来处理,以最终实现我们所需要的功能。
相关文章推荐
- 使用Promise和async-await实现的一个异步遍历+同步执行任务的实例
- Windows I/O模型、同步/异步、阻塞/非阻塞
- 解决windows使用rsync同步到Linux权限问题
- 消息队列的使用 RabbitMQ (二): Windows 环境下集群的实现与优化
- 使用Win32API实现Windows下异步串口通讯(上)
- IOS网络篇10之NSURLConnection的使用(同步异步下载getpost)
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- PHP的Laravel框架中使用消息队列queue及异步队列的方法
- 使用Spring JMS简化异步消息处理
- Windows下使用python库 curses遇到错误消息的解决方案
- CAF(C++ actor framework)使用随笔(同步发送 异步与同步等待)(三)
- windows 2003 server 使用cwrsync同步文件夹的权限问题
- 同步机制及windows同步函数的使用
- AngularJS中的http请求默认为异步的,请问如何设置为同步请求呢?--使用$q
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- ActiveMQ消息的同步和异步
- 基于visual c++之windows核心编程代码分析(15)使用Mutex同步线程
- Socket 的使用方式,阻塞/非阻塞 同步异步
- OKHTTP的get和post的同步使用和异步使用
- 使用cwRsync实现windows下文件定时同步(备份)