Destroy a dispatch handle, without cleaning up the dispatch framework
#include <sys/iofunc.h> #include <sys/dispatch.h> int dispatch_destroy( dispatch_t *dpp );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The function dispatch_destroy() destroys the given dispatch handle. To do so, it frees all objects, sets the memory of the dpp data to 0, then frees this memory. It also closes the channel, even if it's one you passed to dispatch_create_channel().
This function is part of the dispatch layer of a resource manager. For more information, see Layers in a resource manager in the Bones of a Resource Manager chapter of Writing a Resource Manager.
#include <sys/dispatch.h> #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ) { dispatch_t *dpp; int destroyed; if( ( dpp = dispatch_create() ) == NULL ) { fprintf( stderr, "%s: Unable to allocate \ dispatch handle.\n",argv[0] ); return EXIT_FAILURE; } … if ( (destroyed = dispatch_destroy ( dpp )) == -1 ) { fprintf ( stderr, "Dispatch wasn't destroyed, \ bad dispatch handle %d.\n", dpp); return EXIT_FAILURE; } /* else dispatch was destroyed */ … return EXIT_SUCCESS; }
For examples using the dispatch interface, see dispatch_create(), message_attach(), resmgr_attach(), and thread_pool_create().
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |