这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
glib
定时器在各种场景都需要用到,主要用途是执行定时任务。 看完了TBOX中的定时器,下面看一下 glib 的定时器。
Timer
GTimer 记录一个开始时间,并计算从那时起经过的微秒数。这在不同的平台上做得有些不同,而且可能很难做到完全正确,因此 GTimer 提供了一个可移植/方便的设置。
/**
* GTimer:
*
* Opaque datatype that records a start time.
**/
struct _GTimer
{
guint64 start;
guint64 end;
guint active : 1;
};
由于包含函数过多,故结合分析,暂只调研以下内容。
g_timer_new ()
GTimer *
g_timer_new (void);
创建一个新的计时器,并开始计时(即隐式地为您调用 g_timer_start ()
)。
g_timer_start ()
void
g_timer_start (GTimer *timer);
标记一个开始时间,这样以后对 g_timer_elapsed ()
的调用将报告自调用 g_timer_start ()
以来的时间。g_ timer_new ()
自动标记开始时间,因此不需要在创建计时器后立即调用 g_ timer_start ()
。
g_timer_stop ()
void
g_timer_stop (GTimer *timer);
标记结束时间,因此调用 g_timer_elapsed ()
将返回结束时间和开始时间之间的差值。
g_timer_continue ()
void
g_timer_continue (GTimer *timer);
恢复以前用 gtimer_stop ()停止的计时器。在使用此函数之前必须调用 gtimer_stop ()
。
g_timer_elapsed ()
gdouble
g_timer_elapsed (GTimer *timer,
gulong *microseconds);
如果计时器已启动但尚未停止,则获得计时器启动后的时间。如果计时器已经停止,则获取从启动计时器到停止计时器的时间间隔。返回值是经过的秒数,包括任何小数部分。微秒输出参数基本上是无用的。
g_timer_reset ()
void
g_timer_reset (GTimer *timer);
这个函数是无用的; 可以在已经开始的计时器上调用 g_timer_start ()
来重置开始时间,所以 g_timer_reset ()
没有用处。
g_timer_destroy ()
void
g_timer_destroy (GTimer *timer);
销毁计时器,释放相关资源。
g_timer_is_active ()
gboolean
g_timer_is_active (GTimer *timer);
判断计时器当前是否处于活动状态