Files
phs_v1.0.1.0/commonlibrary/c_utils/docs/zh-cn/c_utils_timer.md
2024-09-27 19:16:49 +08:00

2.3 KiB
Raw Blame History

定时器

概述

简介

定时器管理器Timer启动后可向定时器中注册多个定时事件定时事件可以单次触发也可连续执行。

#include <timer.h>

涉及功能

OHOS::Utils::Timer

接口说明

Name
Timer(const std::string& name, int timeoutMs = 1000)
Timer构造函数。在性能敏感的场景下输入更大的timeoutMs。timeoutMs默认值是1000ms性能消耗预估为每 一个timeoutMs中会消耗固定的100us。
virtual ~Timer()
uint32_t Register(const TimerCallback& callback, uint32_t interval, bool once = false)
注册定时事件。入参分别位定时响应函数,定时事件间隔时间,定时事件连续性。
virtual uint32_t Setup()
设置Timer。请勿在停止Shutdown前重复设置。
virtual void Shutdown(bool useJoin = true)
停止Timer。可配置阻塞式停止或者非阻塞式停止。阻塞式停止会等待Timer所有任务结束后停止Timer。 如果配置了timeoutMs为-1可以使用非阻塞式停止防止当前线程阻塞。
void Unregister(uint32_t timerId)
删除定时事件。

使用示例

  1. 使用实例详见base/test/unittest/common/utils_timer_test.cpp
  2. 测试用例编译运行方法:
run -t UT -tp utils -ts UtilsTimerTest

常见问题

  1. Timer在使用前需要通过Setup()进行设置在析构之前需要通过Shutdown()进行关闭。

  2. Timer需要先设置再关闭。使用者应该避免分别在不同线程进行设置和关闭否则会导致线程问题。

  3. 重复设置Timer不会重置Timer的状态Setup()接口会返回TIMER_ERR_INVALID_VALUE。 如果需要重置那么请先关闭Timer再设置。

  4. Shutdown接口的参数决定了Timer中的线程的阻塞与否默认阻塞true若为false则非阻塞。非阻塞选项 可能会导致线程问题,因此不推荐。如果一定要使用非阻塞选项,请自行保证线程中对象的生命周期。