社区
进程/线程/DLL
帖子详情
windows中的WM_TIME是多线程吗,如何产生的?
liuling_8008
2011-10-22 11:21:00
1. windows中的WM_TIME是多线程吗,如何产生的?与时间片有区别吗?
2. c++中,如果不使用windows WM_TIME,如何定时做一些事情?
...全文
126
13
打赏
收藏
windows中的WM_TIME是多线程吗,如何产生的?
1. windows中的WM_TIME是多线程吗,如何产生的?与时间片有区别吗? 2. c++中,如果不使用windows WM_TIME,如何定时做一些事情?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Lactoferrin
2011-10-22
打赏
举报
回复
raw input thread定时把WM_TIMER放到你的线程的消息队列
while(1)
{
Sleep(1000);
...这样可以每秒钟定时做事
}
liuling_8008
2011-10-22
打赏
举报
回复
非常感谢Lactoferrin
Lactoferrin
2011-10-22
打赏
举报
回复
大致步骤:
raw input thread循环等待gptmrMaster
一次循环中,先计算这次循环和上次循环之间的时差并记录这次循环的时刻,遍历所有计时器,每个计时器剩余时间减少那个时差,如果剩余时间小于0,给这个计时器的线程设置一个QS_TIMER的唤醒掩码,最后重新设置gptmrMaster,定时为所有计时器剩余时间最小的那个
当SetTimer的线程PeekMessage时,检查唤醒掩码是否有QS_TIMER,如果有则返回一个WM_TIMER消息
liuling_8008
2011-10-22
打赏
举报
回复
[Quote=引用 10 楼 lactoferrin 的回复:]
然后放到调用了SetTimer的线程的消息队列
csrss等待的是gptmrMaster,和CreateWaitableTimer创建出来的东西差不多,是一个轻量级的
[/Quote]
非常感谢,请问csrss是靠计数来产生的SetTimer消息吗,能详细的说说吗?
Lactoferrin
2011-10-22
打赏
举报
回复
然后放到调用了SetTimer的线程的消息队列
csrss等待的是gptmrMaster,和CreateWaitableTimer创建出来的东西差不多,是一个轻量级的
liuling_8008
2011-10-22
打赏
举报
回复
[Quote=引用 5 楼 lactoferrin 的回复:]
WM_TIME消息由csrss的一个线程产生
线程首次调用和消息相关的api时建立消息队列
[/Quote]
是csrss通过计时产生的,然后放到每个线程的消息队列中去?
W1nds
2011-10-22
打赏
举报
回复
顶一个
学习了
gameslq
2011-10-22
打赏
举报
回复
WM_TIME 不是多线程,WM_TIME消息和消息窗口在一个线程,系统内部以消息的形式来通知定时"到达“,和时间片差别大了,时间片是系统内调度的概念
定时可以是消息的,模拟的、回调的
1。基于消息的,比如WM_TIMER
2。模拟的
凡是具有超时功能的函数都可以用来模拟定时,不如sleep,WaitForSingleObject等
3。回调的
WM_TIME 也算一个,另外还有SetWaitableTimer等
4。硬件层级的
向立天
2011-10-22
打赏
举报
回复
不是多线程
和时间片也是不同领域的概念
如果不用始终消息可以通过定时器内核对象来实现
参考
http://wenku.baidu.com/view/e0cd413567ec102de2bd8994.html
Lactoferrin
2011-10-22
打赏
举报
回复
WM_TIME消息由csrss的一个线程产生
线程首次调用和消息相关的api时建立消息队列
liuling_8008
2011-10-22
打赏
举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
1. windows中的WM_TIME是多线程吗,如何产生的?与时间片有区别吗?
=============
一个消息而已,定时由系统发送的消息,不是多线程。
[/Quote]
谢谢,可以再详细的讲讲吗。
系统是如何定时产生的WM_TIME消息?每个线程有一个消息队列吗?
wltg2001
2011-10-22
打赏
举报
回复
1. windows中的WM_TIME是多线程吗,如何产生的?与时间片有区别吗?
=============
一个消息而已,定时由系统发送的消息,不是多线程。
cczlp
2011-10-22
打赏
举报
回复
WM_TIME不是多线程, 只是一个定时产生的消息.
可以用线程实现定时
Windows
Touch Input
WM
_GESTURE
WM
_TOUCH
另关于消息
WM
_TOUCHDOWN、
WM
_TOUCHUP两个消息,
Windows
7操作系统目前只是作了定义,但未响应...#ifndef
WM
_TOUCH // 自定义多点触摸消息#define
WM
_TOUCH 0x0240#endif来自:http://www.cnblogs.com/yds_am
C++
TIME
R与线程的关系,以及
WM
_
TIME
R消息的不准确性
C++
TIME
R与线程的关系,以及
WM
_
TIME
R消息的不准确性一,Set
Time
r介绍二,定时器与线程的关系三,
WM
_
TIME
R的不准确性四,解决方案 一,Set
Time
r介绍 Set
Time
r函数定义如下: UINT_PTR Set
Time
r( HWND hWnd, // ...
VC++
WM
_
TIME
R 定时器使用方法
定时器在VC
中
的使用频繁,以下讨论定义器的使用方法。 定时器的原型是: WINUSERAPI UINT WINAPI Set
Time
r ( HWND hWnd , UINT nIDEvent, UINT uElapse,
TIME
RPROC lp
Time
rFunc); hWnd 是欲设置定时器的...
VC++
WM
_
TIME
R 定时器使用方法
使用定时器的方法比较简单,通常告诉
Windows
一个时间间隔,然后
WINDOWS
以此时间间隔周期性触发程序。通常有两种方法来实现:发送
WM
_
TIME
R消息和调用应用程序定义的回调函数。 1.1 用
WM
_
TIME
R来设置定时器 ...
MFC sendMessage消息使用说明
首先 我们了解一下
Windows
的消息机制。
Windows
是一个消息驱动式系统,
Windows
消息提供应用程序与应用程序之间,应用程序与
Windows
系统之间进行通信的手段。 举个例子,打开记事本程序,该程序有一个 “文件“菜单。 ...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章