linux ns级定时器_Linux和OS X上的C语言中的ns精度单调时钟

/*

This is based on the snippet current_utc_time.c from:

https://gist.github.com/jbenet/1087739

On OS X,compile with: gcc get_monotonic_time.c

Linux,compile with: gcc get_monotonic_time.c -lrt

*/

#include

#include

#include

#ifdef __MACH__

#include

#include

#endif

// Use clock_gettime in linux,clock_get_time in OS X.

void get_monotonic_time(struct timespec *ts){

#ifdef __MACH__

clock_serv_t cclock;

mach_timespec_t mts;

host_get_clock_service(mach_host_self(),SYSTEM_CLOCK,&cclock);

clock_get_time(cclock,&mts);

mach_port_deallocate(mach_task_self(),cclock);

ts->tv_sec = mts.tv_sec;

ts->tv_nsec = mts.tv_nsec;

#else

clock_gettime(CLOCK_MONOTONIC,ts);

#endif

}

double get_elapsed_time(struct timespec *before,struct timespec *after){

double deltat_s = after->tv_sec - before->tv_sec;

double deltat_ns = after->tv_nsec - before->tv_nsec;

return deltat_s + deltat_ns*1e-9;

}

int main(){

// Do something and time how long it takes.

struct timespec before,after;

get_monotonic_time(&before);

double sum=0.;

unsigned u;

for(u=1; u<100000000; u++)

sum += 1./u/u;

get_monotonic_time(&after);

printf("sum = %e\n",sum);

printf("deltaT = %e s\n",get_elapsed_time(&before,&after));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值