CreateTimerQueueTimer---DeleteTimerQueueTimer ???不好使吗?

Macor 2006-07-15 10:21:24
项目遇到两个问题:
1)CreateTimerQueueTimer创建一个定时器,在过n秒(目前是30秒)后执行,在我自己机器上正常,会30秒后执行.但在有的机器上,却是36秒或37秒.更糟糕的是,在一台机器上定时器好像阻塞了,两个定时器居然都等待了 90秒.各位有没有遇到这种问题~
2)DeleteTimerQueueTimer,按照sdk上的说法(句柄设置为INVALID_HANDLE_VALUE),只有在回调函数里删除当前定时器会发生死锁,但实际上我们没在回调函数里删除也会发生死锁(回调函数里不执行任何操作也会死锁的).
最上层嵌套了一层JS,我发现这样一种现象,如果JS传到vc事件时,创建一个线程执行下面的操作(会做多次DeleteTimerQueueTimer操作),就不会出问题;而不用新线程来做,就可能死锁.


注:我自己写的console程序执行相同的功能,很正常,没任何问题.
...全文
834 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Macor 2006-09-01
  • 打赏
  • 举报
回复
不再使用CreateTimerQueueTimer,还是使用多媒体定时器准确
Macor 2006-07-17
  • 打赏
  • 举报
回复
(回调函数里不执行任何操作也会死锁的).
-------------------------------
在DeleteTimerQueueTimer时死锁.
最奇怪的是这种测试结果, SDK里的帮助我们都看过~~
chenhu_doc 2006-07-15
  • 打赏
  • 举报
回复
jixingzhong 语出惊人 =_=!
jixingzhong 2006-07-15
  • 打赏
  • 举报
回复
DeleteTimerQueueTimer :
1.
You can set CompletionEvent to INVALID_HANDLE_VALUE when calling this function from within the timer callback of another timer as long as the callback function is not executed in the timer thread.

2.
However, a deadlock may occur if two callback functions attempt a blocking DeleteTimerQueueTimer call on each others' timers.

3.
Furthermore, you cannot make a blocking deletion call on a timer associated with the callback.

/* read again and again until you get it ... */

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧