在线程中,我需要定期在一些不同的时间间隔内完成一些工作,这样做的好方法是什么?使用sleep(),然后我需要跟踪下一次唤醒的间隔,这似乎不是最佳方式。
感谢。
答案 0 :(得分:8)
您可以将clock_nanosleep
与TIMER_ABSTIME
标志一起使用绝对时间而不是睡眠的相对时间。这将避免错误累积问题和竞争条件,其中程序被中断,另一个进程在获得当前时间之后但在调用睡眠之前被安排。
或者你可以将POSIX定时器(timer_create
)与信号处理程序一起使用,你选择的信号在你的所有线程中都被阻止,或者在一个新的线程中传递定时器,这个线程表示一个条件变量或信号量你的线程正在等待。
答案 1 :(得分:1)
取决于您需要多少准确度: