windows笔记-等待定时器与用户定时器的区别
2010-09-05 02:36
239 查看
等待定时器(SetWaitableTimer)与用户定时器(SetTimer)它们之间的最大差别是,用户定时器需要在应用程序中设置许多附加的用户界面结构,这使定时器变得资源更加密集。
等待定时器属于内核对象,这意味着它们可以供多个线程共享,并且是安全的。
用户定时器能够生成WM_TIMER消息,这些消息将返回给调用SetTimer(用于回调定时器)的线程和创建窗口(用于基于窗口的定时器)的线程。因此,当用户定时器报时的时候,只有一个线程得到通知。
多个线程可以在等待定时器上进行等待,如果定时器是个人工重置的定时器,则可以调度若干个线程。
如果要执行与用户界面相关的事件,以便对定时器作出响应,那么使用用户定时器来组织代码结构可能更加容易些,因为使用等待定时器时,线程必须既要等待各种消息,又要等待内核对象(如果要改变代码的结构,可以使用MsgaitForMultipleObjects函数)。
等待定时器,当到了规定时间的时候,更有可能得到通知。WM_TIMER消息始终属于最低优先级的消息,当线程的队列中没有其他消息时,才检索该消息。等待定时器的处理方法与其他内核对象没有什么差别,如果定时器发出报时信息,而你的线程正在等待之中,那么你的线程就会醒来。
第一种用法 :(vs2008代码下载)
第一个参数hWnd设为NULL,第四个参数设为TimerProc函数指针。
第二种用法 :(vs2008代码下载)
第一个参数hWnd不为NULL,第四个参数设为TimerProc设置为空。
本文地址:/article/5259754.html
等待定时器属于内核对象,这意味着它们可以供多个线程共享,并且是安全的。
用户定时器能够生成WM_TIMER消息,这些消息将返回给调用SetTimer(用于回调定时器)的线程和创建窗口(用于基于窗口的定时器)的线程。因此,当用户定时器报时的时候,只有一个线程得到通知。
多个线程可以在等待定时器上进行等待,如果定时器是个人工重置的定时器,则可以调度若干个线程。
如果要执行与用户界面相关的事件,以便对定时器作出响应,那么使用用户定时器来组织代码结构可能更加容易些,因为使用等待定时器时,线程必须既要等待各种消息,又要等待内核对象(如果要改变代码的结构,可以使用MsgaitForMultipleObjects函数)。
等待定时器,当到了规定时间的时候,更有可能得到通知。WM_TIMER消息始终属于最低优先级的消息,当线程的队列中没有其他消息时,才检索该消息。等待定时器的处理方法与其他内核对象没有什么差别,如果定时器发出报时信息,而你的线程正在等待之中,那么你的线程就会醒来。
用户定时器SetTimer
UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 );
第一种用法 :(vs2008代码下载)
第一个参数hWnd设为NULL,第四个参数设为TimerProc函数指针。
第二种用法 :(vs2008代码下载)
第一个参数hWnd不为NULL,第四个参数设为TimerProc设置为空。
本文地址:/article/5259754.html
相关文章推荐
- windows笔记-【内核对象线程同步】等待定时器内核对象
- windows笔记-【内核对象线程同步】等待定时器内核对象
- windows笔记-【内核对象线程同步】等待定时器内核对象
- 等待定时器与用户定时器的区别
- 等待定时器与用户定时器的区别
- Windows学习笔记15——定时器
- windows笔记-【用户方式线程同步】互锁的函数家族
- 笔记-WINDOWS SERVER 2008系统管理 第3章 管理WINDOWS用户和组
- windows笔记-【用户方式线程同步】关键代码段
- windows编程学习笔记(5)定时器的使用
- windows 用户变量和系统变量的区别
- 性能测试培训笔记-关于windows下无法增加更多的虚拟用户
- windows 用户变量和系统变量的区别
- 【JavaSE学习笔记】多线程02_Lock,死锁,等待唤醒机制,线程组和线程池,Timer定时器
- windows笔记-【内核对象线程同步】成功等待的副作用
- 《Windows via C/C++》学习笔记 —— 内核对象的“线程同步”之“等待定时器”
- 不占用windows用户对象的定时器
- windows编程学习笔记之定时器
- Windows编程--线程和内核对象的同步-等待定时器内核对象
- 性能测试培训笔记-关于windows下无法增加更多的虚拟用户