PeekMessage和GetMessage函数的主要区别
来源:互联网 发布:python ascii转字符 编辑:程序博客网 时间:2024/05/29 09:44
PeekMessage和GetMessage函数的主要区别有:
1. GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视”消息,如果有消息,就返回true,否则返回false。也可以使用PeekMessage从消息队列中取出消息,这要用到它的一个参数(UINT wRemoveMsg),如果设置为PM_REMOVE,消息则被取出并从消息队列中删除;如果设置为PM_NOREMOVE,消息就不会从消息队列中取出。
2. 如果GetMessage从消息队列中取不到消息,则线程就会被操作系统挂起,等到OS重新调度该线程时,两者的性质不同:使用GetMessage线程仍会被挂起,使用PeekMessage线程会得到CPU的控制权,运行一段时间。
3. GetMessage每次都会等待消息,直到取到消息才返回;而PeekMessage只是查询消息队列,没有消息就立即返回,从返回值判断是否取到了消息。
我们也可以说,PeekMessage是一个具有线程异步行为的函数,不管消息队列中是否有消息,函数都会立即返回。而GetMessage则是一个具有线程同步行为的函数,如果消息队列中没有消息的话,函数就会一直等待,直到消息队列中至少有一条消息时才返回。
如果消息队列中没有消息,PeekMessage总是能返回,这就相当于在执行一个循环,如果消息队列一直为空, 它就进入了一个死循环。GetMessage则不可能因为消息队列为空而进入死循环。
在Windows的内部,两个函数执行着相同的代码。
具体情况具体分析,无法说明到底哪一个更好一些,这要根据实际的应用情况而定。
希望这些对你有所帮助。
0 0
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- GetMessage()和PeekMessage()几个主要区别
- Peekmessage和Getmessage的区别
- GetMessage和 PeekMessage 的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- PeekMessage和GetMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- WPF 无边框窗体
- 各种js特效收集
- Android 各种技术片段,总有你不知道的(持续添加中)
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突——我的解决方案
- PHP strip_tags 函数
- PeekMessage和GetMessage函数的主要区别
- u-boot-2011.06在基于s3c2440开发板的移植之硬件ECC
- 数组的逆序输出
- Eigen初步1:初步体验Eigen库
- TYVJ 最美妙的矩阵
- How to use marks in Vim
- js实现通用的微信分享组件示例
- 降低UIViewController切换的耦合
- 查找占用磁盘最多的10个文件夹