关于OnTimer

OnTimer()只是说定时触发,并不说它是“后台处理”,它仍会阻塞UI线程的;

OnTimer并不是后台线程,它同UI一个线程,所以如果占用UI线程时间过长会阻碍界面过程.

WM_TIMER的优先级比较低,对于要求实时更新的程序不适合,线程的优先级比较高,但是消耗的资源也多一些

(OnTimer)的实现是否属于多线程技术?

楼主yangchengl(爱在今生)2006-05-01 10:17:31 在 VC/MFC / 基础类 提问

请解释一下,谢谢! 问题点数:10、回复次数:14Top

 

1 楼lisypro()回复于 2006-05-01 10:53:25 得分 1

应该是  
  但是不是标准的多线程Top

2 楼lonely001(独行客)回复于 2006-05-01 11:01:55 得分 0

不是Top

3 楼lonely001(独行客)回复于 2006-05-01 11:03:37 得分 2

ONTIMER只是WINDOWS内置的消息发生器产生的消息,ONTIMER消息也是要排队的,这就是为什么ONTIMER很多时候并不精确的原因Top

4 楼lyl_rabbit(阿牛)回复于 2006-05-01 13:53:06 得分 0

不是,但多线程是通过时间分片实现的Top

5 楼zh2817()回复于 2006-05-01 14:44:10 得分 0

不是Top

6 楼Featured(我握着爱情的门票静静排队……)回复于 2006-05-01 15:18:08 得分 0

不是。  
  但比较特殊。准确地说应该是“中断”技术Top

7 楼yangchengl(爱在今生)回复于 2006-05-01 18:14:35 得分 0

这样说对不对,ONTIMER实现了若干段程序的并行运行,但它并不是为各段程序创建了对应的线程,而是采用了软中断技术。Top

8 楼soaroc(会飞的猪)回复于 2006-05-01 21:28:09 得分 0

ONTIMER实现了若干段程序的并行运行  
  -----------------------------------------------------------------------------------  
  对于单CPU来说,是不可能实现程序段的并行运行的,只能是交替运行。像上面的某一楼所说的,其实它与其他的消息没有什么大的区别,只不过此消息的入队是循环的。Top

9 楼yangchengl(爱在今生)回复于 2006-05-02 08:30:41 得分 0

它与其他的消息没有什么大的区别,只不过此消息的入队是循环的。  
  这一点解释的好。  
  我说的并行是指宏观上并行。在一定时间内这些程序段都获得了执行的机会。Top

10 楼BXAllen()回复于 2006-05-02 20:57:03 得分 0

是单线程的!Top

11 楼BXAllen()回复于 2006-05-02 21:01:03 得分 4

mfc在cwnd中的ontimer是调用的api的settimer函数,可以在帮助文档中找到的.调用的函数是通过一个函数指针.如果是多线程的,那么是不可以通过像他定义的那样的函数指针实现的.至于函数的原型,可以自己查一下看看就明白了!  
  Top

12 楼mjm_d(菠萝蜜多)回复于 2006-05-03 14:02:00 得分 0

不是系统级的  
  但是你可以用它模拟一些简单的不要求精确的用户自定义级别的线程Top

13 楼roscoe(草上飞)回复于 2006-05-03 15:43:45 得分 3

不是多程技术,但应是协作式多任务,线程是抢占式多任务

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值