定时器与线程sleep的区别与优劣?

NesTa_xP 2011-10-09 02:30:24
现在有一个任务需要定时启动执行。
请问是使用定时器(CreateWaitableTimer)好一些还是单独开一个线程循环sleep一定时间好一些?请说明原因,谢谢!
...全文
2004 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
NesTa_xP 2011-10-11
  • 打赏
  • 举报
回复
我想是否可以单独开启一个线程,然后在线程里面使用定时器CreateWaitableTimer。
不知道CreateWaitableTimer是否支持在子线程里使用
only_lonely 2011-10-10
  • 打赏
  • 举报
回复
差不多 定时器更精确一些,sleep还要考虑到线程的调度因素。
赵4老师 2011-10-10
  • 打赏
  • 举报
回复
通常定时半分钟以上,sleep半分钟以下。
laslull 2011-10-10
  • 打赏
  • 举报
回复
如果定时调用很频繁 我觉得另起线程sleep比较好
luciferisnotsatan 2011-10-10
  • 打赏
  • 举报
回复
sleep只能精确到毫秒,linux下的sleep只能精确到秒。
我要戒烟了 2011-10-10
  • 打赏
  • 举报
回复
CreateWaitableTimer是系统函数,比自己写线程循环模拟定时,效率高(只要是系统函数,一般效率都比自己写的同样功能的函数效率高或是一样)

自己写线程模拟这个功能优点是整个定时的过程可控(你可以附加一些额外的逻辑在定时线程中),缺点是效率会低
NesTa_xP 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qq120848369 的回复:]

引用 9 楼 nesta_xp 的回复:

引用 7 楼 qq120848369 的回复:

其实定时器是单线程的,起一个线程sleep是多线程问题,其中的同步问题你自己注意.

请问,如果定时器是单线程的,时间到了,执行某个函数,此时,主线程会不会是阻塞状态?


是的。
[/Quote]

我可能不期望主线程阻塞,是不是就只有考虑使用线程+sleep的方式了?
乔巴好萌 2011-10-09
  • 打赏
  • 举报
回复
定时器好像不能创建多个
以前曾经创建16个定时器后 再创建就不成功了
而sleep就没这个问题
精确度方面 windows不是实时OS 都有误差的
qq120848369 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nesta_xp 的回复:]

引用 7 楼 qq120848369 的回复:

其实定时器是单线程的,起一个线程sleep是多线程问题,其中的同步问题你自己注意.

请问,如果定时器是单线程的,时间到了,执行某个函数,此时,主线程会不会是阻塞状态?
[/Quote]

是的。
NesTa_xP 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq120848369 的回复:]

其实定时器是单线程的,起一个线程sleep是多线程问题,其中的同步问题你自己注意.
[/Quote]
请问,如果定时器是单线程的,时间到了,执行某个函数,此时,主线程会不会是阻塞状态?
pathuang68 2011-10-09
  • 打赏
  • 举报
回复
建议用CreateWaitableTimer
qq120848369 2011-10-09
  • 打赏
  • 举报
回复
其实定时器是单线程的,起一个线程sleep是多线程问题,其中的同步问题你自己注意.
Louistao 2011-10-09
  • 打赏
  • 举报
回复
我想起了JAVA的计时器,相当方便。。。
SmartAlex_peng 2011-10-09
  • 打赏
  • 举报
回复
简单的用定时器比较好,定时器准确来说定时效果不好,程序占用资源比较多,特别是多个定时器时;复杂的程序用线程好,特别是多线程,使用线程可以优化资源,提高效率。不过没有具体的优劣,要看具体情况。
PG 2011-10-09
  • 打赏
  • 举报
回复
用这个好。。CreateWaitableTimer
疯魔症 2011-10-09
  • 打赏
  • 举报
回复
CreateWaitableTimer和windows下消息循环的定时器有什么区别么。
bdmh 2011-10-09
  • 打赏
  • 举报
回复
定时任务,用CreateWaitableTimer吧,优劣我觉得谈不上,方便到时肯定的,可以定时多长时间一次,也可以某个时间执行
yujie_v 2011-10-09
  • 打赏
  • 举报
回复
视具体情况而定吧。
定时器和sleep都有优缺点的。

64,649

社区成员

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

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