據我瞭解,那麼pthread_cond_timedwait是採取當前的時間,然後計算時的絕對時間,如果條件沒有信號那麼pthread_cond_timedwait應退出使用。那麼pthread_cond_timedwait週期性任務和掛鐘改變
是否有一種簡單的方法可以使用此函數來可靠地執行週期性任務(問題是在當前時間點和調用pthread_cond_timedwait之間的時間發生變化)?
我應該跑〜每秒週期性任務。
do {
pthread_mutex_lock(mutex);
tx = gettimeofday + 1 second;
do_some_simple_periodic_task();
pthread_cond_timedwait(condition, mutex, tx);
pthread_mutex_unlock(mutex);
} while (!some_exit_condition);
如果更新上下文(包括some_exit_condition),則通知條件。
有一種使用單調定時器或與此類似的方法嗎?如果沒有,pthread_cond_timedwait的用例是什麼?只有在你不關心額外延誤時間的情況下,
我曾經見過另一個線程的信號這一個週期(How to make pthread_cond_timedwait() robust against system clock manipulations?),但它似乎是一個黑客攻擊的解決方案。
是否有不同的&更好的方式讓線程在某個時間間隔內休眠(不易掛鐘變化),但立即響應外部條件?