簡體   English   中英

epoll_wait和更改系統時間

[英]epoll_wait and changing system time back

我的應用程序使用epoll_wait來執行IO事件的定時等待。 如果沒有事件發生,則epoll_wait應該在超時后返回,並且我的應用程序繼續。

在測試期間,有人將系統時鍾調回一天,而我的應用程序中使用epoll_wait的部分停止工作了24小時。 顯然,這是一個問題。

我四處尋找可以讓我的應用知道時間已經改變的東西(例如,信號),但是我什么也沒發現。

有什么辦法可以應對這種突然的時間變化?

使用基於單調時間的計時器(例如timer_create(2))來生成信號並執行阻塞epoll_wait,並檢查-1返回碼和errno是否設置為EINTR。

epoll_wait的Linux內核實現使用CLOCK_MONOTONIC,因此它應不受系統時鍾更改的影響。 (我調查了這個問題,因為我看到了類似的問題,並希望將epoll_wait減為可能的原因。)在v2.6.37之前,它曾經使用過單調的吉卜賽。

我已經向epoll_wait手冊頁提交了補丁程序以澄清這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM