相关疑难解决方法(0)

Clock_nanosleep()尚不支持CLOCK_MONOTONIC_RAW.怎么处理这个?

目前clock_nanosleep在Debian上使用CLOCK_MONOTONIC_RAW Jessie返回EOPNOTSUPP.

如何解决问题并补偿可能在定时器循环中应用于CLOCK_MONOTONIC的NTP调整?

clock_nanosleep本身是否也受到NTP调整的影响?如果在睡觉时发生调整,会clock_nanosleep睡得更久吗?

在我的特定情况下,我是否应该担心可能的CLOCK_MONOTONIC NTP调整?考虑到我的代码将在没有实时时钟的系统上运行并且可能会不时丢失Internet连接,NTP应用于CLOCK_MONOTONIC的最大可能"时间跳转"是什么?

长话故事.我正在使用一个简单的循环来模拟音频文件播放,我需要保持一致的播放位置.

clock_nanosleep 使用TIMER_ABSTIME标志似乎正在完成工作,但我不确定CLOCK_MONOTONIC是否足以避免播放位置的明显跳跃.

这是我正在使用的代码:

clock_gettime(CLOCK_MONOTONIC, &deadline);

// run until asked to stop
while(!need_quit(stop_mutex_signal)) {

    // do stuff ...

    // add time ms to previous deadline
    deadline.tv_nsec += device->periodTime * NANOSECONDS_PER_MILLISEC;

    // normalize the time to account for the second boundary
    if(deadline.tv_nsec >= NANOSECONDS_PER_SEC) {
        deadline.tv_nsec -= NANOSECONDS_PER_SEC;
        deadline.tv_sec++;
    }

    if(clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &deadline, NULL) != 0)
    {
        // something happened - error or exit signal, cannot continue
        return;
    }
} …
Run Code Online (Sandbox Code Playgroud)

c timer

2
推荐指数
1
解决办法
610
查看次数

标签 统计

c ×1

timer ×1