昇腾社区首页
中文
注册

Hiva::Rate类型定义

  • Hiva::BaseRate

    Rate(周期)基类,常用于循环中的sleep,使得任务按固定周期执行(sleep时会减去任务执行耗时)。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    namespace Hiva {
    /* Class to help run loops at a desired frequency */
    class BaseRate {
    public:
        BaseRate(const double frequency);
        explicit BaseRate(const BaseDuration &durationVal);
        virtual ~BaseRate() = default;
        virtual bool Sleep() = 0;
        virtual void Reset() = 0;
        BaseDuration CycleTime() const;
        BaseDuration ExpectedCycleTime() const;
    protected:
        BaseDuration expectedCycleTime_;
        BaseDuration actualCycleTime_;
    };
    }
    
  • Hiva::HivaRate

    继承BaseRate,基于HivaTime进行sleep等待。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    namespace Hiva {
    /* Class to help run loops at a desired frequency */
    class HivaRate : public BaseRate {
    public:
        HivaRate(const double frequency);
        explicit HivaRate(const BaseDuration &durationVal);
        ~HivaRate() override = default;
        bool Sleep() override;
        void Reset() override;
    private:
        HivaTime start_;
    };
    } 
    
  • Hiva::WallRate

    继承BaseRate,基于WallTime进行sleep等待。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    namespace Hiva {
    /* Class to help run loops at a desired frequency */
    class WallRate : public BaseRate {
    public:
        WallRate(const double frequency);
        explicit WallRate(const BaseDuration &durationVal);
        ~WallRate() override = default;
        bool Sleep() override;
        void Reset() override;
    private:
        WallTime start_;
    };
    }