天天看点

服务器设计笔记(2)-----定时器的实现(C++)

   很久之前听著名页游服务器主程讲座时,讲到过定时器的实现,基本思路如下(易语言)

       while(true)

       {

             对定时器进行排序。

             for(遍历定时器)

             {

                   if 如果定时器到:

                          callback;

                   else

                           break;

             }

             usleep(20);

         }

        按照这个思路,我们继续我们的设计:

1: 首先 定义一个thread类:

        实现代码thread.cpp:

 2:定义定时器,和定时器线程:

         timerthread.h

           实现代码:timerthread.cpp

 3: 测试函数:

目前存在的问题:定时不准,主要是由于usleep()之后 ,不能及时醒,这个是因为linux线程调度引起的。

改进的方向:1. timerthread 里面的list换成优先队列

                 2. 添加时间纠正,在测试中发现,每次大概慢100us左右,这对于长时间的定时器是致命。

也想听听广大网友的意见,感激不尽。 

继续阅读