關於Symbian的定時器


 Symbian裏面,比較常用的定時器是 CPeriodic,其實也就是由 CTimer 實現的,而CTimer 則是一個 活動對象(Active Object)。

 

通過查看源代碼發現,活動對象所被調用的最小時間片是取自 User::TickCount()。

 

在SDK中,User::TickCount()的註釋如下:

 


 

static IMPORT_C TUint TickCount();

Description

Gets the current tick count.

The period between ticks is usually 1/64 second, but may be hardware dependent.

Return value


 

也就是說,每次活動對象最小的時間間隔將會是 1/64 秒。

我嘗試過將CPeriodic的時間間隔分別設 1000000/33 和 1000000/31 微秒,而通過計算其時間間隔,可以發現兩者足足有1倍的差別。

這個最小時間片也限制了 CTimer的精度,它的間隔只能是 1/64 秒的 倍數。

 

這就意味着,活動對象並不適合於短時間執行的任務。

 

一個比較好的例子就是 CImageDecoder 。

 

它使用活動對象來進行異步解碼,但是當圖片很小的時候,解碼時間不足1/64秒,那麼時間就被白白浪費了。

 

同步解碼是一個不錯的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章