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);
}
第二個定時器手柄是從來沒有在循環中運行,由於循環已經在運行,而「定時器稱爲」從不打印。所以,我想運行它,然後將第二定時器後暫時停止循環 -
....
uv_run(&loop, UV_RUN_DEFAULT);
// some work
uv_stop(&loop);
// now add second timer
uv_run(&loop, UV_RUN_DEFAULT); // run again
....
但是這一次第一環開始與重複運行後沒有工作,可能是因爲後來的行不會被執行計時器。那麼我應該如何爲已經運行的uvloop添加一個新的定時器句柄?
涼爽,所以我們可以操縱循環中它的回調函數,只是確保我們首先停止它。 –