0
我有一個用例,我想要獲取一個條件變量並在一段時間間隔後釋放它(例如:我有一個時間有序的事件隊列,並且我想在指定的時間段內阻塞。)pthread_cond_timedwait中的秒溢出
Duration = Earliest Time in Q - Current Time()
我遇到以下這些將完全符合我的目的。
pthread_cond_timedwait(pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex,
const struct timespec *restrict abstime);
但問題是timespec.sec是time_t類型(這是一個32符號類型)和溢出。有沒有解決方法?是否還有其他構造可供使用,我們將會阻止更長時間?我正在使用Linux平臺。
是的,在這種情況下,代碼必須移植到64位編譯器。 pthread_cond_timedwait失敗,因爲我們傳入32位類型。是否有任何類似的庫取代了一個有符號的32位類型而採用了雙重阻塞。 – KodeWarrior
@KodeWarrior:說你今天的pthread_cond_timedwait()調用的'abstime.sec'字段溢出是無意義的,因爲那意味着你要求它等待超過25年。 – caf
我不明白爲什麼它是荒謬的。當你建立系統時,你將他們設計爲在未來10天或未來10年內工作? – KodeWarrior