zoukankan      html  css  js  c++  java
  • libuv计时器

    1、uv_timer_t - 计时器句柄

    使用该类型句柄来调用计时器回调

    2、API

    2.1、uv_timer_init

    int uv_timer_init(uv_loop_t* loop, uv_timer_t* handle)
    

    初始化计时器句柄

    2.2、uv_timer_start

    int uv_timer_start(uv_timer_t* handle, uv_timer_cb cb, uint64_t timeout, uint64_t repeat)
    
    void (*uv_timer_cb)(uv_timer_t* handle)
    

    开始计时器,timeoutrepeat 都是以 ms 作为单位

    如果 timeout 为 0,则回调函数在下次时间迭代中执行,如果非0,则回调函数会在 timeout 后第一次执行,接下来每次在 repeat 后执行

    2.3、uv_timer_stop

    int uv_timer_stop(uv_timer_t* handle)
    

    停止计时器,回调函数不会再执行

    2.4、uv_timer_again

    int uv_timer_again(uv_timer_t* handle)
    

    停止计时器,如果计时器已经开始并正在正在重复执行,则使用 repeat 作为 timeout 重启,若计时器还没有开始,则返回 UV_EINVAL

    2.5、uv_timer_set_repeat

    void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat)
    

    设置计时器的 repeat 值,计时器会根据该值进行调度

    如果 repeat 为50ms,首次运行了17ms,则33ms后会再次运行。而如果有其他任务占用,超出了33ms,则之后回调函数会尽快去执行

    2.6、uv_timer_get_repeat

    uint64_t uv_timer_get_repeat(const uv_timer_t* handle)
    

    返回 repeat

    2.7、uv_timer_get_due_in

    uint64_t uv_timer_get_due_in(const uv_timer_t* handle)
    

    获取计时器的到期值,这个值是相对于 uv_now()

    如果计时器失效,则返回0

    3、代码示例

    void timerCB(uv_timer_t *handle) {
      auto value = (long long) handle->data;
      cout << value << endl;
      if (value >= 126) {
        uv_timer_stop(handle);
        return;
      }
      handle->data = (void *) ++value;
    }
    
    int main() {
    
      uv_loop_t *loop = uv_default_loop();
    
      uv_timer_t timer;
      uv_timer_init(loop, &timer);
    
      timer.data = (void *) 123;
      uv_timer_start(&timer, timerCB, 1000, 4000);
    
      uv_run(loop, UV_RUN_DEFAULT);
    
      return 0;
    }
    
  • 相关阅读:
    python https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
    python打包为exe文件
    文件自定义扫描工具
    pandas 的常用方法
    cisco应用
    Cisco 模拟配置
    python 识别图片上的数字
    OpenSSL
    OpenSSL
    OpenSSL
  • 原文地址:https://www.cnblogs.com/sherlock-lin/p/14426653.html
Copyright © 2011-2022 走看看