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

wei*_*wei 4 c pthreads

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

谢谢.

R..*_*R.. 8

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

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