0
我想用libev在C++中創建異步方法。如果需要,我可以傳遞一個回調方法作爲參數。如何用C++創建異步方法使用libev
例如
test();
printf("After test() method\n");
的test()
是一個異步的方法,所以test()
完成其執行之前,必須執行下一printf()
語句。
我嘗試使用libev
對於這個簡單的例子:
void testCallback(struct ev_loop *loop, struct ev_io *watcher, int revents)
{
sleep(5);
ev_io_stop(loop, watcher);
}
int test()
{
struct ev_loop *loop = ev_default_loop(0);
ev_io watch;
ev_io_init(&watch, testCallback, 0, EV_READ);
ev_io_start(loop, &watch);
ev_run(loop, 0);
return 0;
}
int main() {
test();
printf("After test() method");
return 0;
}
在這個例子中,printf
該事件循環已經停止後得到執行。這種功能是否可以使用libev?我用Google搜索,但沒有得到這種需求的例子。
是的,'printf'在循環停止後執行。我的問題是如何實現這種異步功能?即使我知道了這一點_Test不是異步,而是testCallback是異步._你能說得有點細緻嗎? – Chaitanya 2013-03-13 05:44:31
ev_run(loop,0);將不會返回它是一個永遠運行的循環。將printf移到回調函數中,並在結束之前執行。另外ev_io_stop(循環,觀察者)導致循環結束,所以它是一次性事件。如果您想要基於計時器的事件,請參閱以下鏈接http://linux.die.net/man/3/ev – 2013-03-13 06:13:26
如果將printf語句放入回調函數中,則只有在調用回調函數後纔會執行printf語句。不管被調用的回調是什麼,我都希望printf執行。這就是我們所說的異步執行的意思嗎? – Chaitanya 2013-03-13 06:37:24