Spaces:
Sleeping
Sleeping
.\" | |
.\" Copyright 1998 by the Massachusetts Institute of Technology. | |
.\" Copyright (C) 2004-2009 by Daniel Stenberg | |
.\" | |
.\" Permission to use, copy, modify, and distribute this | |
.\" software and its documentation for any purpose and without | |
.\" fee is hereby granted, provided that the above copyright | |
.\" notice appear in all copies and that both that copyright | |
.\" notice and this permission notice appear in supporting | |
.\" documentation, and that the name of M.I.T. not be used in | |
.\" advertising or publicity pertaining to distribution of the | |
.\" software without specific, written prior permission. | |
.\" M.I.T. makes no representations about the suitability of | |
.\" this software for any purpose. It is provided "as is" | |
.\" without express or implied warranty. | |
.\" | |
.TH ARES_LIBRARY_CLEANUP 3 "19 May 2009" | |
.SH NAME | |
ares_library_cleanup \- c-ares library deinitialization | |
.SH SYNOPSIS | |
.nf | |
#include <ares.h> | |
void ares_library_cleanup(void) | |
.fi | |
.SH DESCRIPTION | |
.PP | |
The | |
.B ares_library_cleanup | |
function uninitializes the c-ares library, freeing all resources | |
previously acquired by \fIares_library_init(3)\fP when the library | |
was initialized, provided there was only one single previous call to | |
\fIares_library_init(3)\fP. If there was more than one previous call to | |
\fIares_library_init(3)\fP, this function uninitializes the c-ares | |
library only if it is the call matching the call to | |
\fIares_library_init(3)\fP which initialized the library | |
(usually the very first call to \fIares_library_init(3)\fP). | |
Other calls to \fIares_library_cleanup(3)\fP have no effect other than | |
decrementing an internal counter. | |
.PP | |
This function must be called when the program using c-ares will | |
no longer need any c-ares function. Once the program has called | |
\fIares_library_cleanup(3)\fP sufficiently often such that the | |
library is uninitialised, it shall not make any further call to any | |
c-ares function. | |
.PP | |
This function does not cancel any pending c-ares lookups or requests | |
previously done. Program must use \fIares_cancel(3)\fP for this purpose. | |
.PP | |
.B This function is not thread safe. | |
You have to call it once the program is about to terminate, but this call must | |
be done once the program has terminated every single thread that it could have | |
initiated. This is required to avoid potential race conditions in library | |
deinitialization, and also due to the fact that \fIares_library_cleanup(3)\fP | |
might call functions from other libraries that are thread unsafe, and could | |
conflict with any other thread that is already using these other libraries. | |
.PP | |
Win32/64 application DLLs shall not call \fIares_library_cleanup(3)\fP from | |
the DllMain function. Doing so will produce deadlocks and other problems. | |
.SH AVAILABILITY | |
This function was first introduced in c-ares version 1.7.0 along with the | |
definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an | |
indication of the availability of this function. Reference counting in | |
\fIares_library_init()\fP and \fIares_library_cleanup()\fP, which requires | |
calls to the former function to match calls to the latter, is present since | |
c-ares version 1.10.0. | |
Earlier versions would deinitialize the library on the first call | |
to \fIares_library_cleanup()\fP. | |
.PP | |
Since the introduction of this function, it is absolutely mandatory to call it | |
for any Win32/64 program using c-ares. | |
.PP | |
Non-Win32/64 systems can still use c-ares version 1.7.0 without calling | |
\fIares_library_cleanup(3)\fP due to the fact that \fIcurrently\fP it is nearly | |
a do-nothing function on non-Win32/64 platforms. | |
.SH SEE ALSO | |
.BR ares_library_init(3), | |
.BR ares_cancel(3) | |
.SH AUTHOR | |
Yang Tse | |
.PP | |
Copyright 1998 by the Massachusetts Institute of Technology. | |
.br | |
Copyright (C) 2004-2009 by Daniel Stenberg. | |