Hiva::CreateTimer

产品支持情况

产品

是否支持

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

x

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

x

Atlas 训练系列产品

x

Atlas 200/300/500 推理产品

x

功能说明

创建Timer定时器。

进程调用该接口,即创建并开始运行一个定时器。

函数原型

1
Hiva::Timer Hiva::CreateTimer(const Hiva::HivaDuration &timerPeriod, const TimerCallback &timerCb, const std::string &groupName, const bool oneshot = false, const bool autostart = true)

参数说明

参数名

输入/输出

说明

timerPeriod

输入

触发回调函数的周期,为框架标准的Duration类型。

timerCb

输入

定时器到期后的回调函数,类型为TimerCallback,其中TimerEvent定义如下:

using TimerCallback = std::function<void (const TimerEvent &)>;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
struct TimerEvent
{
    Time last_expected;     // 上次回调应该发生的时刻 
    Time last_real;         // 上次回调实际发生的时刻
    Time last_expired;      // 上次定时器在timer Server处过期,并向APP侧发起通知的时刻
    Time current_expected;  // 本次回调应该发生的时刻
    Time current_real;      // 本次回调实际发生的时刻
    Time current_expired;   // 本次定时器在timer Server处过期,并向APP侧发起通知的时刻
    struct{
    Hiva::WallDuration last_duration;  // 上次callback执行耗时
    } profile;
};

groupName

输入

调用OpenHiva::Init时创建的线程组。如果为确定性组,则使用确定性调度框架;否则使用操作系统的调度框架。

oneshot

输入

定时器的模式标识。

  • true代表采用一次性的oneshot模式,定时器只会被触发一次。
  • false代表采用周期性的periodic模式,定时器会被周期性触发,直至进程资源被清理。

autostart

输入

定时器的启动标识。

  • true代表自动启动,接口返回时定时器已经开启。
  • false代表不自动启动,接口返回时定时器未开启,需通过Hiva::Timer::Start手动开启。

返回值

返回Hiva::Timer的handle,后续可基于该handle进行start、stop等操作。

约束说明