请问,定时器和线程的区别以及优缺点?
分别应用在哪些方面?

解决方案 »

  1.   

    你说的定时器是SetTimer那个定时器,还是等待时间对象?
      

  2.   

    实际上SetTimer那个和API里面SetTimer本质上应该是一样的,不过MFC进行了封装。
      

  3.   

    这两个概念应该不好放在一起比较。SetTimer定时器就是消息机制,在精度和准确性上都差强人意,而且定时器消息会被丢弃,一般低精度的定时(比如做个时钟之类)用它。多线程要复杂得多,每个线程基本可以认为是独立运行,各线程之间是平行的关系(考虑优先级的话,有所差异)。用线程代替定时器,只是一种简单的运用,更多用在管理后台任务、输入数据(采集、网络传输等)、界面响应这些方面。建议看看Windows编程搞懂定时器,看看Windows核心编程搞懂多线程。这两个不是一个层次的东西。
      

  4.   

    SetTimer定时器应当是系统的一个线程,一旦到了时间,系统会向用户主线程发送一个消息,用户主线程会因为系统的这个消息(如果有回调的话)阻塞来处理这个事件。如果是等待计时对象的话,本身也是调用了系统的线程池功能(2000及以上)。
      

  5.   

    这两个概念应该不好放在一起比较。 SetTimer定时器就是消息机制,在精度和准确性上都差强人意,而且定时器消息会被丢弃,一般低精度的定时(比如做个时钟之类)用它。 多线程要复杂得多,每个线程基本可以认为是独立运行,各线程之间是平行的关系(考虑优先级的话,有所差异)。用线程代替定时器,只是一种简单的运用,更多用在管理后台任务、输入数据(采集、网络传输等)、界面响应这些方面。 建议看看Windows编程搞懂定时器,看看Windows核心编程搞懂多线程。这两个不是一个层次的东西。
      

  6.   

    在消息比较拥挤的时刻定时器的WM_TIMER消息会被丢弃,以前就遇到过这个情况,找了很久才发现是定时器消息被丢弃!
    线程我觉得用到的地方比较多!
      

  7.   

    多个线程是“同时”执行的多个任务;定时可以看作是在本线程内插入的任务。 
    如果需要多个任务同时执行,就要用多线程;如果需要每隔一段时间做某件事就用定时。
    ===============================================
    我指的就是SetTimer API创建的定时器.
    因为我只有一个CPU,线程之前不是也要同步吗?有同步和互斥,又只有一个CPU,针对CPU的时间片来说,也是单步的.所以我觉得最主要的区别还是,定时器消息有可以丢失吧.