linux下精确定时/控速的方法

struct timespec begin;
unsigned long interval = xxxx;//nS
unsigned long long ns;
clock_gettime(CLOCK_MONOTONIC, &begin);
while(1)
{
    .....
    ns = begin.tv_nsec;
    ns += interval;
    begin.tv_sec += ns/(1000*1000*1000);
    begin.tv_nsec = ns%(1000*1000*1000);
    clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &begin, NULL);
}

//优点是误差不累计,且不受系统负载影响
//缺点是相对复杂(对比usleep)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值