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 に答える