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. JavaScript 全选函数的实现

    Html代码: <table id="purchase-info" class="table table-bordered table-hover table-st ...

  2. linux概念之/etc

    [Thu Apr 02 15:04:32 1028 /dev/pts/0 192.168.2.250 /etc]#ll |grep -v "^d"|wc -l99[Thu Apr ...

  3. #linux包之tcpdump之tcpdump命令

    概述 man tcpdump 已阅 yum install tcpdump Downloading Packages:(1/2): libpcap-1.4.0-1.20130826git2dbcaa1 ...

  4. 【转】SVN的UUID错误

    操作TortoiseSVN时,报如下错误:       Command Update       Repository UUID '62b86956-73d9-2945-ba87-0546d71898 ...

  5. html之ol标签

    有序列表,请使用 CSS 来定义列表的类型. 通常和li配对使用 HTML5新属性: compact reversed:降序 start:有序列表的起始值 type:在列表中使用标记类型(1,A,a, ...

  6. linux vi 工具的使用

    linux vi 工具的使用 1.打开文件 vi filename 如果存在该文件,则打开,不存在,则删除 2. 进入vi后,按i建,可以输入内容, 按ESC 在按: ,输入wq保存并退出. 3.移动 ...

  7. Linux下编译Boost

    编译环境 操作系统: Red Hat Enterprise Linux Server release 5.4 64-bit 编译工具: gcc (GCC) 4.1.2 20080704 (Red Ha ...

  8. HDU2829

    题目大意:给定一个长度为n的序列,至多将序列分成m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和.m<=n<=1000. 分析:令w[i,j]表示区间[i,j]中两两乘积之和,f ...

  9. JavaScript中对于闭包的理解

    1.什么是闭包? 闭包,官方对闭包的解释是:一个拥有很多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 闭包的特点: (1).作为一个函数变量的一个引用,当函 ...

  10. JavaScript中回调函数的使用

    在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. ...