Правильное закрытие цикла Libuv во время инициализации - PullRequest
0 голосов
/ 22 октября 2019

Я инициализирую цикл в libuv, но если мне нужно вернуться после того, как я инициализировал цикл, но до того, как я вызвал uv_run, как правильно очистить всю память и файловые дескрипторы? Вот мой пример кода: loop означает uv_loop_t* и server означает uv_tcp_t*:

if (uv_loop_init(loop) < 0) {
    return -1;
}
if (uv_tcp_init(loop, server) < 0) {
    // What code here?
    return -1;
}
if (some_other_function() < 0) {
    // What code here?
    return -1;
}
uv_run(loop, UV_RUN_DEFAULT);

В соответствии с этим вопросом я должен остановиться, пройти и запуститьпетля, закрывающая все ручки;но это предполагает, что я уже запускаю цикл, а я нет. Я мог бы просто позвонить uv_loop_close(loop), но это не освобождает ручки.

...