6
を実行する上で、別のタイマーを追加 -は、すでに次のプログラムを考えるとループ
#include <iostream>
#include <uv.h>
int main()
{
uv_loop_t loop;
uv_loop_init(&loop);
std::cout << "Libuv version: " << UV_VERSION_MAJOR << "."
<< UV_VERSION_MINOR << std::endl;
int r = 0;
uv_timer_t t1_handle;
r = uv_timer_init(&loop, &t1_handle);
uv_timer_start(&t1_handle,
[](uv_timer_t *t) { std::cout << "Timer1 called\n"; }, 0, 2000);
uv_run(&loop, UV_RUN_DEFAULT);
// second timer
uv_timer_t t2_handle;
r = uv_timer_init(&loop, &t2_handle);
uv_timer_start(&t2_handle,
[](uv_timer_t *t) { std::cout << "Timer2 called\n"; }, 0, 1000);
uv_loop_close(&loop);
}
ループがすでに実行されているので、第二のタイマのハンドルは、ループ上で実行されることはありません、と印刷されることはありません「タイマ2は、いわゆる」。
....
uv_run(&loop, UV_RUN_DEFAULT);
// some work
uv_stop(&loop);
// now add second timer
uv_run(&loop, UV_RUN_DEFAULT); // run again
....
しかし、第一ループが繰り返して実行を開始した後、後行が実行されませんので、これは再びおそらく、うまくいきませんでした - だから私はそれを実行した後、第2のタイマーを追加した後、一時的にループを停止しようとしましたタイマー。では、すでに実行中のuvloopに新しいタイマーハンドルを追加する方法はありますか?
クールなので、それはちょうど私達が最初にそれを停止しました確認して、コールバック関数だ以内に、私たちはループを操作することができます。 –