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

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

 #include <stdio.h>
#include <sys/timeb.h> void main_tick(time_t cur_sec)
{ } int main()
{
int msec_per_tick = ; // 每一个TICK 的毫秒值 struct timeb s_tp_cur = {, };
struct timeb s_tp_fin = {, };
int next_millitm = ; // 当前时间经过一个tick 之后的毫秒值,在未进位到秒之前
int surplus_msec = ; // 剩余tick 毫秒值: > 0 代表需要休眠
ftime(&s_tp_cur);
s_tp_fin = s_tp_cur; int count = ;
while (count-- >= )
{
//< 主tick 开始
main_tick(s_tp_cur.time);
//< 主tick 结束 ftime(&s_tp_cur); surplus_msec = (int)(s_tp_fin.time - s_tp_cur.time) *
+ (s_tp_fin.millitm - s_tp_cur.millitm);
#if defined OS_WINDOWS
printf("beg: %lld.%d, end: %lld.%d, surplus_msec = %d\n",
s_tp_cur.time, s_tp_cur.millitm,
s_tp_fin.time, s_tp_fin.millitm,
surplus_msec);
#elif defined OS_LINUX
printf("beg: %ld.%d, end: %ld.%d, surplus_msec = %d\n",
s_tp_cur.time, s_tp_cur.millitm,
s_tp_fin.time, s_tp_fin.millitm,
surplus_msec);
#endif if (surplus_msec > )
{
printf("Sleep(%d)\n", surplus_msec);
next_millitm = s_tp_cur.millitm + msec_per_tick + surplus_msec;
#if defined OS_WINDOWS
Sleep(surplus_msec);
#elif defined OS_LINUX
usleep(surplus_msec * );
#endif
}
else
{
next_millitm = s_tp_cur.millitm + msec_per_tick;
} // 计算tick 时间到的end 值
s_tp_fin.time = s_tp_cur.time + next_millitm / ;
s_tp_fin.millitm = next_millitm % ;
}; return ;
}

ftime() 系统时间的更多相关文章

  1. C语言中的系统时间结构体类型

    在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:0 ...

  2. .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)

    我们有很多种方法评估一个方法的执行耗时,比如使用性能分析工具,使用基准性能测试.不过传统的在代码中编写计时的方式依然有效,因为它可以生产环境或用户端得到真实环境下的执行耗时. 如果你希望在 .NET/ ...

  3. C++常见编程--获取当前系统时间

    C++常见编程--获取当前系统时间 文章首发https://www.cppentry.com 本文主要使用time() 及strftime() 函数 C++系统和时间相关的函数基本上都是使用C语言提供 ...

  4. MySQL设置字段的默认值为当前系统时间

    问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录的插入时间,那么就将当前系统时间作为该记录创建的时间. 应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,应该由数据 ...

  5. 【转】PHP中获取当前系统时间、时间戳

    今天写下otime($time, $now)为将时间格式转为时间戳,$time为必填.清楚了这个,想了解更多,请继续往下看. 3. date($format)用法比如:echo date('Y-m-d ...

  6. C语言系统时间读取

    1 读出系统时间(每隔一秒)#include#includeint main(){  while(1) {    time_t t;    t= time(0); struct tm *p;     ...

  7. 使用AIDL调用远程服务设置系统时间

    在实际工作中,经常遇到客户需要用代码设置系统时间的需求,但是Android非系统应用是无法设置系统时间的.于是,我设计了一个使用系统签名的时间设置服务,客户通过bind调用服务里的方法就能达到设置时间 ...

  8. python有超时的windows系统时间设置代码

    手边的笔记本用久了,cmos电池可能又没电了.每次开机时间都不对,导致访问一些有https的网页会出现警告信息. 于是找了找通过python脚本设置系统时间的方法,发现了两种,其一是调用socket直 ...

  9. JAVA中获取当前系统时间及格式转换

    JAVA中获取当前系统时间   一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...

随机推荐

  1. ExtJs 入门教程

    http://www.cnblogs.com/iamlilinfeng/archive/2012/12/31/2840663.html

  2. $(function(){})和$(document).ready(function(){}) 的用法

    当文档载入完毕就执行,以下几种效果是等价的:1. $(function(){ //这个就是jQuery ready()的简写,即下2的简写 // do something }); 2. $(docum ...

  3. MongoDB管理与开发精要 书摘

    摘自:<MongoDB管理与开发精要>         性能优化 创建索引 限定返回结果条数 只查询使用到的字段,而不查询所有字段 采用capped collection 采用Server ...

  4. css_样式样式器的分类

    详情:http://www.w3school.com.cn/h.asp 1.标签样式器:此样式器仅对html页面中div标签有效果 div{ background-color: rosybrown; ...

  5. Android ListView 第一次设置Adapter时候getView调用多次

    之前遇到这个奇怪现象,记录一下: 使用Listview并设置Adapter时, 会回调多次getView,比如我有4个items,按理说getView应该是调用一次(打出4个log),结果回调有4次( ...

  6. linux设置系统日期时间

    设置当前日期: date -s 08/06/2015 设置当前时间:date -s 10:03:00 写入BIOS: clock -w 显示当前日期时间: date

  7. comet基于HTTP长连接技术(java即时通信,推送技术详解)

    服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...

  8. redis 服务访问密码设定

    1. 更改redis.conf配置 # requirepass foobared 去掉注释,foobared改为 自己的password , 我测试的时候用的是 redis-password 2.启动 ...

  9. bzoj4316: 小C的独立集

    Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...

  10. Config Advisor

    Description: Config Advisor Overview Config Advisor is a configuration validation and health check t ...