产品支持情况
产品
|
是否支持
|
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件
|
x
|
Atlas 200I/500 A2 推理产品
|
√
|
Atlas 推理系列产品
|
x
|
Atlas 训练系列产品
|
x
|
Atlas 200/300/500 推理产品
|
x
|
功能说明
创建SteadyTimer定时器。
进程调用该接口,即创建并开始运行一个定时器。
- APP创建SteadyTimer过程中会订阅一个定时器的事件,定时器名称由APP名称+定时器+序列号生成,以保证唯一性。
- APP通过Server/Client的Topic通信方式将定时器name和相关信息发送给定时器Server处理,等时间到期后,定时器Server发布该话题,通知到原APP,执行用户的回调函数。
函数原型
| Hiva::SteadyTimer Hiva::CreateSteadyTimer(const Hiva::WallDuration &steadyPeriod, const SteadyTimerCallback &steadyCallback, const std::string &steadyGroupName, const bool oneshot = false, const bool autostart = true)
|
参数说明
参数名
|
输入/输出
|
说明
|
steadyPeriod
|
输入
|
触发回调函数的周期,为框架标准的Duration类型。
|
steadyCallback
|
输入
|
定时器到期后的回调函数,参数类型为SteadyTimerCallback,其中WallTimerEvent为:
using SteadyTimerCallback = std::function<void (const SteadyTimerEvent &)>;
1
2
3
4
5
6
7
8
9
10
11
12 | struct SteadyTimerEvent
{
Hiva::SteadyTime last_expected; // 上次回调应该发生的时刻
Hiva::SteadyTime last_real; // 上次回调实际发生的时刻
Hiva::SteadyTime last_expired; // 上次定时器在timer Server处过期,并向APP侧发起通知的时刻
Hiva::SteadyTime current_expected; // 本次回调应该发生的时刻
Hiva::SteadyTime current_real; // 本次回调实际发生的时刻
Hiva::SteadyTime current_expired; // 本次定时器在timer Server处过期,并向APP侧发起通知的时刻
struct{
Hiva::WallDuration last_duration; // 上次callback执行耗时
} profile;
};
|
|
steadyGroupName
|
输入
|
调用OpenHiva::Init时创建的线程组。如果为确定性组,则使用确定性调度框架;否则使用操作系统的调度框架。
|
oneshot
|
输入
|
定时器的模式标识。
- true代表采用一次性的oneshot模式,定时器只会被触发一次。
- false代表采用周期性的periodic模式,定时器会被周期性触发,直至进程资源被清理。
|
autostart
|
输入
|
定时器的启动标识。
|
返回值
返回Hiva::SteadyTimer的handle,后续可基于该handle进行start、stop等操作。