社区
C++ 语言
帖子详情
SetTimer生成的定时器是同步调用,还是异步调用?
pgmsoul
2009-10-18 09:04:28
发现主线程被挂起之后,Timer也被挂起了,怀疑是同步调用回调函数。
...全文
631
8
打赏
收藏
SetTimer生成的定时器是同步调用,还是异步调用?
发现主线程被挂起之后,Timer也被挂起了,怀疑是同步调用回调函数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pgmsoul
2009-10-21
打赏
举报
回复
这样比设置个Timer还简单,还有SetTimer,KillTimer的。还有设置回调,看来不要老跟着微软的思路走。
还有那个SetWaitTimer那个回调函数完全是多余的,在自己的线程里调用代码就行了。
pgmsoul
2009-10-21
打赏
举报
回复
Timer在多线程下,确实是不可用的。它所在的线程阻塞,就完蛋了。
于是生成个线程,然后while循环,调用sleep(100),相当于100ms的定时器。
butwang
2009-10-20
打赏
举报
回复
[Quote=引用 5 楼 pgmsoul 的回复:]
刚才看了一下SetWaitTimer的内核定时器,它实际上需要启动一个线程,而且它的准确度也是10ms级别的,不知道是世界函数本身不准,资料说可以准确到ms级。
实际上生成一个线程,然后用Sleep定时挂起,就是一个定时器呀。
[/Quote]
可以精确到毫秒级,SetWaitTimer内部用的是线程的APC队列,APC队列比线程的消息队列权限高,但是线程必须处在"警告"的状态下,
pgmsoul
2009-10-18
打赏
举报
回复
刚才看了一下SetWaitTimer的内核定时器,它实际上需要启动一个线程,而且它的准确度也是10ms级别的,不知道是世界函数本身不准,资料说可以准确到ms级。
实际上生成一个线程,然后用Sleep定时挂起,就是一个定时器呀。
huqinglu123
2009-10-18
打赏
举报
回复
我记得是同步的,只是SetTimer有延迟的情况,不是理想中的那样准确
老邓
2009-10-18
打赏
举报
回复
同步,存在消息阻塞,不准确。
建议用内核计时器。
pgmsoul
2009-10-18
打赏
举报
回复
不是基于消息,hwnd传0,设置了回调函数。
butwang
2009-10-18
打赏
举报
回复
如果是基于消息的定时器的话(SetTimer最后一个参数为0),主线程被阻塞了,那消息循环肯定不能运行了,定时器肯定不起作用了,
Qualcomm平台BREW开发技术文档
网络更换(如启动C网
同步
时间) 115 修改为1980年前情况 115 修改为2050年后的情况 115 时区改边的情况 116 待机测试 116 正常待机 116 强制待机 116 待机后来电和短信 116 挂起和唤醒...
QUALCOMM平台BUIW开发文档
网络更换(如启动C网
同步
时间) 115 修改为1980年前情况 115 修改为2050年后的情况 115 时区改边的情况 116 待机测试 116 正常待机 116 强制待机 116 待机后来电和短信 116 挂起和唤醒...
定时器
定时器
并不是一种并发[线程],而是一种延迟,是一种异步,由当前线程执行,即如果
定时器
任务中有阻塞,会阻塞主线程。 alarm get
timer
/
set
timer
共同点:使用信号; 不同点:
set
timer
可以自动重启和有三个独有...
Set
Timer
定时器
的用法
什么时候我们需要用到
Set
Timer
函数呢?... 使用
定时器
的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_
TIMER
消息和
调用
应用程序定义的回调函数。
定时器
概述
异步
定时器
首先说一下最简单的,频率
定时器
。其实就是设置一个频率的值。然后其所在
定时器
相信大家都不陌生,在日常的网络编程,窗口编程,都会接触到
Set
Timer
这一类函数。那么
定时器
到底是怎么实现的呢? 首先...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章