ACE Time Value使用注意事項

2021-05-25 15:38:12 字數 1192 閱讀 4132

ace自定義了乙個重要的時間類ace_time_value來管理與時間相關的資料:

/*** @class ace_time_value

** @brief operations on "timeval" structures, which express time in

* seconds (secs) and microseconds (usecs).

** this class centralizes all the time related processing in

* ace.  these time values are typically used in conjunction with os

* mechanisms like , , or .

*/class ace_export ace_time_value

。。。這個類在很多地方要用到,比如我們經常使用絕對時間來做超時判斷等:

ace_time_value tv = ace_os::gettimeofday() + ace_time_value(1);//當前時間過1秒

if (m_task.putq(mb, &tv) == -1)

1、 經常通過ace_time_value類來儲存絕對時間或相對時間,用其msec()成員函式可以返回它對應時間的毫秒值,msec()函式返回型別是long,而不是unsigned long,所以它的值可能為負,為避免這個情況,請把它轉換為無符號數來使用。比如:

取得當前絕對時間對應的毫秒值:

unsigned long lcurtime = (unsigned long)(ace_os::gettimeofday().msec());

ace_time_value tv(100, 0);//構造乙個100秒的時間

2、msec()函式返回值轉換成無符號數之後,其取值範圍0~0xff ff ff ff, 即0~4294967295毫秒,也就是4294967295/1000/3600/24=49.71天!

3、 更改作業系統時間除了導致ace計時器(比如通過ace_reactor::instance()->schedule_timer註冊的計時器)排程發生混亂(比如你把系統時間調大,很可能導致計時器事件長期不產生!),還會導致ace_os::gettimeofday()之類的操作取值發生變化,這也會導致計算時間差之類的功能發生異常。所以華為t2000網管明確規定,服務執行期間不能更改系統時間!!!

ios NSUserDefaults使用注意事項

nsuserdefaults適合儲存輕量級的資料,他不僅可以儲存基本資料型別,還可以儲存nsnumber integer float double nsstring,nsdate,nsarray,nsdictionary,bool型別。nsuserdefaults standarduserdefau...

HttpURLConnection使用注意事項

先上簡單 第一種 urlcon.setconnecttimeout 10000 必須設定,不設定網路異常情況會卡死在connect中 urlcon.setreadtimeout 10000 urlcon.connect in new bufferedinputstream url.openstrea...

使用HttpURLConnection注意設定超時

這幾天測試paypal的支付介面payflowapi,發現在通訊過程中如果網路中斷,那麼程式就會掛死。雖然api本身提供了timeout的設定,但似乎不管用。經過測試發現,對方的 實現只是設定了connecttimeout,這樣在建立連線的時候如果網路中斷,那麼超時以後就會報出錯誤。但如果連線建立以...