繁体   English   中英

在C中使用pthread的线程中的计时器?

[英]timer in a thread with pthread in C?

在线程中,我需要定期在一些不同的时间间隔内完成一些工作,这样做的好方法是什么? 使用sleep(),然后我需要跟踪下一次唤醒的间隔,这似乎不是最好的方法。

谢谢。

您可以将clock_nanosleepTIMER_ABSTIME标志一起使用,以使用绝对时间而不是睡眠的相对时间。 这将避免错误累积问题和竞争条件,其中程序被中断,另一个进程在获取当前时间之后但在调用睡眠之前被安排。

或者,您可以将POSIX定时器( timer_create )与信号处理程序一起使用,其中您选择的信号在您的所有线程中被阻止,或者在新线程中使用定时器传递,该线程表示您的线程正在等待的条件变量或信号量。

取决于您需要多少准确度:

  • 你可以使用clock_gettime这是非常准确的(~10MHz)。 (使用实时或单调时钟)
  • 如果分辨率和开销是没有问题的,而是你想获得真实世界的时候,你也可以的gettimeofday

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM