libuv: как запустить новый таймер внутри ручка другого таймера

60
7

Я использую библиотеку libuv, и я хочу запустить новый таймер внутри дескриптора другого таймера:

void c2(uv_timer_t* handle) {
fprintf(stderr, "c2 timer is executing in event-loop... \n");
}

void c3(uv_timer_t* handle) {
fprintf(stderr, "c3 timer is executing in event-loop... \n");

uv_timer_t timer2;
uv_timer_init(uv_default_loop(), &timer2);
uv_timer_start(&timer2, c2, 5000, 0);
}

int main() {
uv_loop_t *loop = uv_default_loop();
uv_loop_init(loop);

uv_timer_t timer;
uv_timer_init(loop, &timer);
uv_timer_start(&timer, c3, 5000, 0);

uv_run(loop, UV_RUN_DEFAULT);

uv_loop_close(loop);
free(loop);

return 0;
}

Я ожидаю через 5 секунд видеть внутри консоли:

c3 timer is executing in event-loop...

и через 5 секунд:

c2 timer is executing in event-loop...

но вместо этого я вижу через 5 секунд, что таймер c3 выполняет, и после 5 секунд позже цикл цикла просто завершит работу, и я не вижу, чтобы выполнялся таймер c2. Я не понимаю, почему и как я могу это сделать?

спросил(а) 2017-09-16T12:42:00+03:00 3 года, 4 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема