码迷,mamicode.com
首页 > 其他好文 > 详细

ftime() 系统时间

时间:2015-05-08 23:48:02      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

ftime() 函数,这个函数是取系统的时间,精确到毫秒级别,这个函数在windows 和linux 下都可用。所以我暂时是比较喜欢它的。

这个函数返回一个结构体,结构体中两个成员,其中time 成员,与函数 time(NULL) 返回的是等同的,用它可以配合localtime mktime ctime 等时间函数作相应的时间操作。

 1 #include <stdio.h>
 2 #include <sys/timeb.h>
 3 
 4 void main_tick(time_t cur_sec)
 5 {
 6 
 7 }
 8 
 9 int main()
10 {
11     int msec_per_tick = 20;    // 每一个TICK 的毫秒值
12 
13     struct timeb s_tp_cur = {0, 0};
14     struct timeb s_tp_fin = {0, 0}; 
15     int next_millitm = 0;    // 当前时间经验一个tick 之后的毫秒值,在未进位到秒上前
16     int surplus_msec = 0;    // 剩余tick 毫秒值: > 0 代表需要休眠
17     ftime(&s_tp_cur);
18     s_tp_fin = s_tp_cur;
19 
20     int count = 50;
21     while (count-- >= 0)
22     {
23         //< 主tick 开始
24         main_tick(s_tp_cur.time);
25         //< 主tick 结束
26 
27         ftime(&s_tp_cur);
28 
29         surplus_msec = (int)(s_tp_fin.time - s_tp_cur.time) * 1000
30             + (s_tp_fin.millitm - s_tp_cur.millitm);
31 #if defined OS_WINDOWS
32         printf("beg: %lld.%d, end: %lld.%d, surplus_msec = %d\n", 
33             s_tp_cur.time, s_tp_cur.millitm, 
34             s_tp_fin.time, s_tp_fin.millitm, 
35             surplus_msec);
36 #elif defined OS_LINUX
37         printf("beg: %ld.%d, end: %ld.%d, surplus_msec = %d\n", 
38             s_tp_cur.time, s_tp_cur.millitm, 
39             s_tp_fin.time, s_tp_fin.millitm, 
40             surplus_msec);
41 #endif
42 
43         if (surplus_msec > 0)
44         {
45             printf("Sleep(%d)\n", surplus_msec);
46             next_millitm = s_tp_cur.millitm + msec_per_tick + surplus_msec;
47 #if defined OS_WINDOWS
48             Sleep(surplus_msec);
49 #elif defined OS_LINUX
50             usleep(surplus_msec * 1000);
51 #endif
52         }
53         else
54         {
55             next_millitm = s_tp_cur.millitm + msec_per_tick;
56         }
57 
58         // 计算tick 时间到的end 值
59         s_tp_fin.time    = s_tp_cur.time + next_millitm / 1000;
60         s_tp_fin.millitm = next_millitm % 1000;
61     };
62 
63     return 0;
64 }

 

ftime() 系统时间

标签:

原文地址:http://www.cnblogs.com/suyunhong/p/4489066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!