0

我正在尝试使用 libev 在 C++ 中创建一个异步方法。如果需要,我可以将回调方法作为参数传递。

例如

test();
printf("After test() method\n");

test()是一个异步方法,所以下一条printf()语句应该在test()完成之前执行。

我尝试使用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 可以实现这种功能吗?我用谷歌搜索,但找不到这种需要的例子。

4

1 回答 1

1

从代码中 printf 应该在循环停止后执行。测试不是异步的,而 testCallback 是异步的。你可能误解了逻辑。

于 2013-03-12T14:30:07.557 回答