现在的位置: 首页 > 综合 > 正文

关于Symbian的定时器

2013年09月19日 ⁄ 综合 ⁄ 共 550字 ⁄ 字号 评论关闭

 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秒,那么时间就被白白浪费了。

 

同步解码是一个不错的选择。

抱歉!评论已关闭.