libuv: как изящно завершить приложение при ошибке?

У меня есть приложение, которое использует библиотеку libuv. оно запускает цикл по умолчанию:

uv_run(uv_default_loop());

Как можно изящно завершить приложение в случае сбоя? Сейчас я делаю это как в следующем примере:

uv_tcp_t* tcp = malloc(sizeof(uv_tcp_t));
int r = uv_tcp_init(uv_default_loop(), tcp);

if (r) {
  free(tcp);
  uv_loop_delete(default_loop);
  exit(EXIT_FAILURE);
}

Нужно ли вызывать функцию uv_loop_delete? Что она делает? Отбрасывает ли она все ожидающие функции обратного вызова? Закрывает ли она все открытые в данный момент TCP-соединения? Должен ли я сделать это вручную перед выходом?

P.S.: Не могу добавить тег 'libuv' (менее 1500 репутации). Может кто-нибудь создать и добавить его?

10
задан Prof. Falken supports Monica 31 January 2012 в 08:56
поделиться