由于达到最大值,clock_gettime() 何时会使用 CLOCK_MONOTONIC 返回一个较小的值?我不是指被描述为错误的小扭曲,而是类似于计数器重置的东西。
它是时间测量的,还是与滴答的绝对数量有关?
我必须实现一个计时器(间隔 1 或 2 秒),而且我不需要那么高的精度。但是应用程序可能会运行几个小时而不会重新启动。 (我估计最多 1 天)。
我不想保证我不会犯任何可能导致它停止沟通的错误。
timerfd 是否已经解决了这个问题?
最佳答案
由于 struct timespec 使用秒的 time_t 值,因此可以覆盖的完整范围至少为 68 年。鉴于 CLOCK_MONOTONIC 的定义是从某个任意点开始的,理论上 clock_gettime 可以随时超时。实际上,如果您的应用程序运行了几十年,您才需要担心这一点。但是,如果您偏执狂,请制作一个包装函数,如果发生计时器回绕,它会大声提示并终止应用程序。
关于CLOCK_MONOTONIC 最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066152/