Как создать асинхронный метод в C ++ с использованием libev

Я пытаюсь создать асинхронный метод в C ++, используя libev. При необходимости я могу передать метод обратного вызова в качестве аргумента.

Например

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? Я погуглил, но не смог получить пример с такой необходимостью.

0

Решение

Из кода printf должен быть выполнен после остановки цикла. Тест не асинхронный, а testCallback асинхронный. Возможно, вы неправильно поняли логику.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]