• ICE的Timer和TimerTask


    IceUtil中提供了Timer和TimerTask来实现定时计算。Timer可以定时或重复执行TimerTask。

    class Timer : /* ... */ {
    public:
        Timer();
    
        void schedule(const TimerTaskPtr& task,
                      const IceUtil::Time& interval);
        void scheduleRepeated(const TimerTaskPtr& task,
                              const IceUtil::Time& interval);
        bool cancel(const TimerTaskPtr& task);
        void destroy();
    };
    typedef IceUtil::Handle<Timer> TimerPtr;
    
    class TimerTask : virtual public IceUtil::Shared {
    public:
        virtual ~TimerTask() { }
        virtual void runTimerTask() = 0;
    };
    typedef IceUtil::Handle<TimerTask> TimerTaskPtr;

    schedule: 在interval时间后执行timertask中的runTimerTask,只执行一次。

    scheduleRepeated: 每隔interval时间,就会重复执行timerTask实例的runTimerTask。

    cancel: 取消重复执行的task,对于一次性的task无效。正在运行的task会正常结束后,被取消。

    destroy: 删除执行表上的所有task。

    补:

    1.纯虚函数使类成为抽象类,不能实例化。只能子类继承并实现所有纯虚函数。

    2.虚继承是多重继承下的特有概念,避免虚基类(Shared)在子类中有过个对象出现。

    3.IceUtil::Time

    class Time {
    public:
    Time();
    static Time now();
    static Time seconds(long);
    static Time milliSeconds(long);
    static Time microSeconds(long long);
    ...
    }
    IceUtil::Time t = IceUtil::Time::seconds(5);


  • 相关阅读:
    TCP四种定时器--学习笔记
    Python魔术师--self
    python的socket里 gethostbyname 与 gethostbyname_ex 的区别
    用python查看URL编码的中文
    基于linux 的2048
    用灵活的指针访问类私有变量
    ie8无法拉伸背景图
    图片的onerror 事件解析
    stream.js
    Promise
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982032.html
Copyright © 2020-2023  润新知