libuv 定时器timer 使用: g++ -o sunquan main.cpp -luv 执行 ./sunquan 可以看到每隔1秒打印一次 count的值。

uv_timer_start(&timer, timer_cb, timeout, repeat); 其中timeout是首次触发等待的时间毫秒值,之后每隔repeat毫秒触发一次,如果repeat=0表示首次触发之后不再触发。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//main.cpp
#include <cstdlib>
#include <uv.h>
#include <assert.h>
#include <time.h>
#include <iostream>
using namespace std;

void timer_cb(uv_timer_t *handlei)
{
   static int count=1;
   cout<<"count=="<<count++<<endl;
}
int main()
{
    int r;
    uv_timer_t timer;
    r = uv_timer_init(uv_default_loop(),&timer);
    assert(r==0);
    // 0
    cout<<uv_is_active((uv_handle_t*) &timer)<<endl;
    // 0
    cout<< uv_is_closing((uv_handle_t*) &timer)<<endl;
    cout<<"start "<<time(NULL)<<endl;

    r = uv_timer_start(&timer, timer_cb, 5000, 1000);
    r = uv_run(uv_default_loop(),UV_RUN_DEFAULT);
    cout<<"r="<<r<<endl;
    return 0;
}